#include #include #include using namespace std; using namespace atcoder; using mint = modint998244353; #define rep(i,n) for (int i = 0; i < (n); ++i) #define Inf 1000000000 int N,M,Q; using vv = vector; vv op(vv a,vv b){ vector ret(N); rep(i,N){ ret[i] = b[a[i]]; } return ret; } vv e(){ vector ret(N,-1); rep(i,N)ret[i] = i; return ret; } int main(){ cin>>N>>M>>Q; segtree seg(M); rep(i,Q){ int t; scanf("%d",&t); if(t==1){ int D; scanf("%d",&D); D--; vector P(N); rep(j,N){ scanf("%d",&P[j]); P[j]--; } seg.set(D,P); } if(t==2){ int S; scanf("%d",&S); vector ret = seg.prod(0,S); vector ans(N); rep(j,N){ ans[ret[j]] = j; } swap(ret,ans); rep(j,N){ if(j!=0)printf(" "); printf("%d",ret[j]+1); } printf("\n"); } if(t==3){ int L,R; scanf("%d %d",&L,&R); int ans = 0; vector ret = seg.prod(L-1,R); rep(j,N){ ans += abs((ret[j]) - j); } printf("%d\n",ans); } } return 0; }