#include<bits/stdc++.h>
using namespace std;
int q,n,sum=1,a;
struct Node{
int data;
Node *next;
}*head,*p,*r,*now;
void insert(Node *p,Node *r){
p->next=r->next;
r->next=p;
}
Node * query(int x){
now=head;
while(now->next){
now=now->next;
if(now->data==x){
if(now->next==NULL)cout<<0<<endl;
else{
now=now->next;
cout<<now->data<<endl;
}
}
}
}
Node * query1(int x){
now = head;
while(now->next){
now=now->next;
if(now->data==x){
return now;
}
}
}
void dele(Node *f){
f->next=f->next->next;
}
int main(){
head=new Node;
r=head;
p=new Node;
head->next=r;
p->data=1;
p->next=NULL;
r->next=p;
r=p;
cin>>q;
for(int i=0;i<q;i++){
cin>>n;
if(n==1){
p=new Node;
cin>>p->data;
cin>>a;
r=query1(a);
insert(r,p);
}
else if(n==2){
cin>>a;
query(a);
}
else if(n==3){
cin>>a;
p=query1(a);
dele(p);
}
}
}