#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
using namespace std;
int n;
struct P{
	int p[100010];
	void init()
	{
		for(int i=1;i<=n;i++)
			p[i]=i;
	}
};
P res;
P operator *(const P& a,const P& b)
{
	for(int i=1;i<=n;i++)
		res.p[i]=a.p[b.p[i]];
	return res;
}
P ans,t;
P fpow(const P& a,int b)
{
	ans.init();t=a;
	while(b)
	{
		if(b&1)ans=ans*t;
		t=t*t;
		b>>=1;
	}
	return ans;
}
P tmp;
P getinv(const P& a)
{
	for(int i=1;i<=n;i++)
		tmp.p[a.p[i]]=i;
	return tmp;
}
P A,Ainv,p,pinv,q,qinv,fans;
P a[7];
void input(P& a)
{
	for(int i=1;i<=n;i++)
		scanf("%d",&a.p[i]);
	return ;
}
int main()
{
	int k;
	scanf("%d %d",&n,&k);
	input(p);input(q);
	pinv=getinv(p);
	qinv=getinv(q);
	A=q*pinv*qinv*p;
	Ainv=getinv(A);
	a[1]=p;
	a[2]=q;
	for(int i=3;i<=6;i++)
		a[i]=a[i-1]*getinv(a[i-2]);
	fans=fpow(A,(k-1)/6)*a[(k-1)%6+1]*fpow(Ainv,(k-1)/6);
	for(int i=1;i<=n;i++)
		printf("%d ",fans.p[i]);
	printf("\n");
	return 0;
}