#include <bits/stdc++.h>
using namespace std;

using perm = vector<int>;
perm operator*(perm a, perm b){
    perm *r = new perm();
    r->resize(a.size());
    for(size_t i=0;i<a.size();i++) (*r)[i] = a[b[i]-1];
    return *r;
}
perm inv(perm a){
    perm *r = new perm();
    r->resize(a.size());
    for(size_t i=0;i<a.size();i++) (*r)[a[i]-1] = i+1;
    return *r;
}
perm pow(perm a, int n){
    perm *r = new perm();
    r->resize(a.size());
    for(size_t i=0;i<a.size();i++) (*r)[i] = i+1;
    if(n==0) return *r;
    if(n==1) return *r*a;
    delete r;
    if(n%2) return pow(a*a, n/2)*a;
    return pow(a*a, n/2);
}

int main(){
    cin.tie(nullptr);
    ios::sync_with_stdio(false);
    cout.precision(12);
    cout.setf(ios_base::fixed, ios_base::floatfield);
    
    int n, k;
    vector<int> p, q, r, s;    
    cin >> n >> k;
    p.resize(n);
    q.resize(n);
    r.resize(n);
    s.resize(n);
    for(int i=0;i<n;i++) cin >> p[i];
    for(int i=0;i<n;i++) cin >> q[i];
    
    s = q*inv(p)*inv(q)*p;
    s = pow(s, (k-1)/6);
    if(k%6==1) copy(p.begin(), p.end(), r.begin());
    else if(k%6==2) copy(q.begin(), q.end(), r.begin());
    else{
        for(int i=3;i<=(k-1)%6+1;i++){
            r = q*inv(p);
            copy(q.begin(), q.end(), p.begin());
            copy(r.begin(), r.end(), q.begin());
        }
    }    

    r = s*r*inv(s);
    for(int i=0;i<n;i++) cout << r[i] << " \n"[i==n-1];
    
    return 0;
}