# powが逆だった T = int(input()) for _ in range(T): N, p = map(int, input().split()) A = list(map(int, input().split())) rA = [0]*N for i in range(N): rA[A[i]-1] = i A = rA C = [[] for i in range(N + 1)] vst = [False for i in range(N)] for i in range(N): if vst[i]: continue; v = i r = [] while True: r.append(v) vst[v] = True v = A[v] if v == i: break C[len(r)].append(r) B = [0 for i in range(N)] for c in C: if len(c) == 0: continue sz = len(c[0]) if sz % 2 == 1: step = pow(2*p, -1, sz) for x in c: for i in range(sz): B[x[i]] = x[(i + step) % sz] else: step = pow(p, -1, sz) while len(c) > 1: a = c.pop() b = c.pop() for i in range(sz): B[a[i]] = b[i] B[b[i]] = a[(i+step) % sz] if len(c) == 1: st2 = pow(2*p, -1, sz-1) a = c.pop() for i in range(sz-1): B[a[i]] = a[(i + st2) % (sz-1)] B[a[sz-1]] = B[a[sz-2]] for x in B: print(x + 1, end=" ") print()