#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,m,a[200030],b[200030],col[200030],t[200030];
vector<int> v[1000030];
map<int,bool> mp;
void dfs(int cur,int step){
if(mp[cur]){
for(auto i:mp){
col[i.first]=step;
}
return ;
}
for(auto i:v[cur]){
mp[cur]=1;
dfs(i,step+1);
}
}
void dfs2(int cur,int lost){
if(lost==0){
cout<<b[cur]<<" ";
return ;
}
for(auto i:v[cur]){
dfs2(i,lost-1);
}
}
signed main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>a[i];
if(i==a[i]) col[i]=1;
else if(t[a[i]]==0){
t[a[i]]=i;
v[a[i]].push_back(i);
}
}
for(int i=1;i<=n;i++){
cin>>b[i];
}
for(int i=1;i<=n;i++){
if(!col[i] && t[i]==1){
mp.clear();
dfs(i,0);
}
}
for(int i=1;i<=n;i++){
if(col[i]==0){
dfs2(t[a[i]],m%t[a[i]]);
}
else dfs2(i,m%col[i]);
}
}