#include using namespace std; using pii = pair; using ll = long long; const int N = 2000010, MOD = 998244353, INF = 0x3f3f3f3f; int n, m, w[N]; int a[N]; void solve() { scanf("%d%d", &n, &m); for (int i = 1; i < n + 1; i++) scanf("%d", w + i), a[w[i]] = i; vector st(n + 1); vector stk, ans(n + 1); vector > > p(n + 1); for (int i = 1; i < n + 1; i++) if (!st[i]) { stk.push_back(i); st[i] = 1; int ne = i; while (!st[a[ne]]) ne = a[ne], st[ne] = 1, stk.push_back(ne); if (stk.size() == 1) ans[stk.back()] = i; else { int len = stk.size(), t = m * 2 % len; if (__gcd(t, len) == 1) { vector q(stk.size()); int now = 0; for (int i = 0; i < len; i++) { q[now] = stk[i]; now = (now + t) % len; } for (int i = 0; i < len; i++) { ans[q[i]] = q[(i + 1) % len]; } } else { p[len].push_back(stk); } } stk.clear(); } for (int i = 2; i <= n; i += 2) { while (p[i].size() > 1) { auto a = p[i].back(); p[i].pop_back(); auto b = p[i].back(); p[i].pop_back(); vector q(i << 1); int now = 0, t = m * 2 % (i << 1); for (int j = 0; j < i; j++) { q[now] = a[j]; now = (now + t) % i; } now = 1; for (int j = 0; j < i; j++) { q[now] = b[j]; now = (now + t) % i; } for (int j = 0; j < (i << 1); j++) ans[q[j]] = q[(j + 1) % (i << 1)]; } if (p[i].size()) { auto u = p[i].back(); int x = u.back(); u.pop_back(); int len = u.size(), t = m * 2 % len; vector q(u.size()); int now = 0; for (int i = 0; i < len; i++) { q[now] = u[i]; now = (now + t) % len; } for (int i = 0; i < len; i++) { ans[q[i]] = q[(i + 1) % len]; } ans[x] = q[0]; } } for (int i = 1; i < n + 1; i++) printf("%d ", ans[i]); puts(""); // return; vector > f(n + 1), g(n + 1); for (int i = 1; i < n + 1; i++) f[i].push_back(a[i]); for (int i = 1; i < m * 2 + 1; i++) { for (int j = 1; j < n + 1; j++) g[j].clear(); for (int j = 1; j < n + 1; j++) for (auto t : f[j]) g[ans[j]].push_back(t); swap(g, f); } int sum = n; for (int i = 1; i < n + 1; i++) for (auto u : f[i]) { sum -= u == i; } // printf("%d %d\n", sum, (int)sqrt(n)); // assert(sum <= sqrt(n)); } int main() { int T = 1; scanf("%d", &T); while (T--) solve(); return 0; }