#include <cstdio>
#define tz 200002
using namespace std;
FILE *in=fopen("heapuri.in","r"),*out=fopen("heapuri.out","w");
int index[tz],val[tz],hip[tz],len,it;
void upward(int number)
{
int loc=number,aux;
while(loc>1&&val[hip[loc]]<val[hip[loc/2]])
aux=index[hip[loc]],
index[hip[loc]]=index[hip[loc/2]],
index[hip[loc/2]]=aux,
aux=hip[loc],
hip[loc]=hip[loc/2],
hip[loc/2]=aux,
loc/=2;
}
void downward(int a)
{
int aux,b=0;
while(b!=a)
{
b=a;
if(b*2+1<=len&&val[hip[a]]>val[hip[b*2+1]])a=b*2+1;
if(b*2<=len&&val[hip[a]]>val[hip[b*2]])a=b*2;
aux=hip[a],
hip[a]=hip[b],
hip[b]=aux,
index[hip[b]]=b,
index[hip[a]]=a;
}
}
int main()
{
int nr,data;
len=0,it=0,val[0]=1000000001;
for(fscanf (in,"%d",&nr);nr;--nr)
{
fscanf(in,"%d",&data);
if(data==1)
++len,++it,
fscanf(in,"%d",&data),
val[it]=data,
index[it]=len,
hip[index[it]]=it,
upward(len);
else if(data==2)
fscanf(in,"%d",&data),
val[data]=-1,
upward(index[data]),
hip[1]=hip[len],
index[hip[1]]=1,
len--,
downward(1);
else if(data==3)
fprintf(out,"%d\n",val[hip[1]]);
}
return 0;
}