#include <iostream>
using namespace std;
const int N=1e6+10;
int xb=1;
int date[N],ne[N];
int mp[N];
void insert_back(int x,int y)
{
xb++;
date[xb]=y;
mp[y]=xb;
int p = mp[x];
ne[y]=ne[p];
ne[p]=xb;
}
void find(int x)
{
int p = mp[x];
cout << date[ne[p]] << endl;
}
void erase_back(int x)
{
xb--;
int p = mp[x];
ne[p]=ne[ne[p]];
}
int main()
{
date[xb]=1;
mp[1]=xb;
int q;
cin >> q;
for(int i=0;i<q;i++)
{
int cx,x;
cin >> cx >> x;
if(cx==1)
{
int y;
cin >> y;
insert_back(x,y);
}
else
{
if(cx==2)
{
find(x);
}
else
{
erase_back(x);
}
}
}
return 0;
}