from sys import stdin input = stdin.readline def func(A, cnt): ans = [-1]*len(A) idx = 0 for a in A: while ans[idx] != -1: idx += 1 idx %= len(A) ans[idx] = a idx += cnt idx %= len(A) return ans for _ in range(int(input())): N, P = map(int, input().split()) A = list(map(int, input().split())) for i in range(N): A[i] -= 1 ans = [-1]*N F = [False]*N G = [[] for _ in range(N+1)] for i in range(N): if F[i]: continue route = [i] F[i] = True idx = A[i] while idx != i: route.append(idx) F[idx] = True idx = A[idx] if len(route) == 1: ans[i] = i continue G[len(route)].append(tuple(route)) for i in range(N+1): for j in range(len(G[i])//2): l, r = G[i][j*2], G[i][j*2+1] L, R = func(l, P%i), func(r, P%i) for k in range(i): ans[L[k]] = R[k] ans[R[k]] = L[(k+1)%i] if len(G[i])%2 == 1: route = func(G[i][-1][:-1], P*2%(i-1)) for k in range(i-1): ans[route[k]] = route[(k+1)%len(route)] ans[G[i][-1][-1]] = ans[G[i][-1][-2]] print(*[a+1 for a in ans])