#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#define maxn 100005
using namespace std;

int n,m,p[maxn],q[maxn],i,j,k;

struct per{int a[maxn];} a,b,A,B,C,D,F,G[7];
per operator*(per a,per b){
	per c;
	for(int i=1;i<=n;i++) c.a[i]=b.a[a.a[i]];
	return c;
}
per inv(per a){
	per b;
	for(int i=1;i<=n;i++) b.a[a.a[i]]=i;
	return b;
}

int main(){
	scanf("%d%d",&n,&m);
	for(i=1;i<=n;i++) scanf("%d",&p[i]);
	for(i=1;i<=n;i++) scanf("%d",&q[i]);
	for(i=1;i<=n;i++) a.a[i]=p[i],b.a[i]=q[i];
	A=inv(a),B=inv(b),C=B*a*b*A;
	G[1]=a,G[2]=b;
	for(i=3;i<=6;i++) G[i]=inv(G[i-2])*G[i-1];
	for(i=1;i<=n;i++) D.a[i]=i;
	for(k=(m-1)/6;k;k/=2,C=C*C) if (k&1) D=D*C;
	F=D*G[(m-1)%6+1]*inv(D);
	for(i=1;i<=n;i++) printf("%d ",F.a[i]);
}