#include<bits/stdc++.h>
#define endl '\n'
using namespace std;
using ll = long long;
void GordenGhost();
const int N = 1e5+10;
ll n,m;
vector<int>e[N];
map<int,int>mp;
signed main(){
ios::sync_with_stdio(0);
cin.tie(0),cout.tie(0);
GordenGhost();
return 0;
}
void GordenGhost(){
cin>>n>>m;
for (int i=1;i<=n;i++){
int k;
cin>>k;
for (int j=0;j<k;j++){
int a;
cin>>a;
e[i].push_back(a);
}
}
int now=1;
vector<int>w;
for (int i=0;i<m;i++){
int op;
cin>>op;
if (op==0){
int kl;
cin>>kl;
now=e[now][kl-1];
}else if (op==1){
int kl;
cin>>kl;
mp[kl]=now;
cout<<now<<endl;
}else if (op==2){
int kl;
cin>>kl;
now=mp[kl];
}
}
cout<<now;
}