#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
struct node{
ll v;
node *nxt;
node(ll val):v(val),nxt(NULL){}
};
node *head;
node *findpos(ll x){
node *p=head;
while (p->v!=x) p=p->nxt;
return p;
}
void insert(node *p,ll y){
node *q=p->nxt;
node *n=new node(y);
p->nxt=n;
n->nxt=q;
}
void del(node *p){
node *q=p->nxt;
if (q!=NULL){
p->nxt=q->nxt;
delete q;
}
}
ll q,op,x,y;
int main(){
cin>>q;
head=new node(1);
while (q--){
cin>>op;
if (op==1){
cin>>x>>y;
node *p=findpos(x);
insert(p,y);
}
if (op==2){
cin>>x;
node *p=findpos(x);
if (p->nxt==NULL) cout<<"0\n";
else cout<<p->nxt->v<<'\n';
}
else{
cin>>x;
node *p=findpos(x);
del(p);
}
}
}