#include<iostream>
#include<cstdio>
using namespace std;
const int N=100010;
int head,idx,e[N],ne[N];
void init()
{
head=-1;
idx=0;
}
void inhead(int x)
{
e[idx]=x;
ne[idx]=head;
head=idx++;
}
void insert(int k,int y)
{
e[idx]=y;
ne[idx]=ne[k];
ne[k]=idx++;
}
void rem(int k)
{
ne[k]=ne[ne[k]];
}
int find(int x)
{
int cu=head;
while(cu!=-1)
{
if(e[cu]==x) return cu;
else cu=ne[cu];
}
return -1;;
}
int main()
{
init();
inhead(1);
int q;
scanf("%d",&q);
while(q--)
{
int s,x,y;
scanf("%d %d",&s,&x);
int k=find(x);
if(s==1)
{
scanf("%d",&y);
insert(k,y);
}
else if(s==2)
{
if(ne[k]==-1) printf("0\n");
else printf("%d\n",e[ne[k]]);
}
else rem(k);
}
return 0;
}