import sys input = sys.stdin.readline T=int(input()) for tests in range(T): N,P=list(map(int,input().split())) A=list(map(int,input().split())) for i in range(N): A[i]-=1 A_INV=[-1]*N for i in range(N): A_INV[A[i]]=i USE=[0]*N ANS=[0]*N for i in range(N): if USE[i]==0: now=i L=[now] while True: USE[now]=1 now=A[now] if now==L[0]: break L.append(now) #print(L) c=-1 if len(L)%2==0: c=L.pop() k=2*P%len(L) if k==0: for x in L: ANS[x]=x continue X=[-1]*len(L) X[0]=A[i] X[k]=i #print(X) ind=k while True: now=X[ind] c=A_INV[now] if X[(ind+k)%len(L)]==-1: X[(ind+k)%len(L)]=c ind=(ind+k)%len(L) else: break #print("!",X) for i in range(len(X)): ANS[X[i]]=X[(i+1)%len(X)] #print(X[i],X[(i+1)%len(X)]) #print(ANS) for i in range(N): ANS[i]+=1 print(*ANS)