#include <iostream>
#include <fstream>
using namespace std;
ifstream f("heapuri.in");
ofstream g("heapuri.out");
int a[200001],o[200001],v[200001];
int n,q,x,k,N;
int UP(int l)
{
while(l>1&&v[a[l]]<v[a[l/2]]){swap(a[l],a[l/2]);swap(o[a[l]],o[a[l/2]]);l=l/2;}
return l;
}
int DOWN(int l)
{
while(2*l<=k)
{
if(2*l+1<=k)
{
if(v[a[l]]<=v[a[2*l]])
{
if(v[a[l]]<=v[a[2*l+1]])return l;
else{swap(a[l],a[l*2+1]);swap(o[a[l]],o[a[l*2+1]]);l=l*2+1;}
}
else
{
if(v[a[l]]<=v[a[2*l+1]]){swap(a[l],a[l*2]);swap(o[a[l]],o[a[l*2]]);l=l*2;}
else
{
if(v[a[2*l]]<=v[a[2*l+1]]){swap(a[l],a[l*2]);swap(o[a[l]],o[a[l*2]]);l=l*2;}
else{swap(a[l],a[l*2+1]);swap(o[a[l]],o[a[l*2+1]]);l=l*2+1;}
}
}
}
else
{
if(v[a[l]]>v[a[2*l]]){swap(a[l],a[l*2]);swap(o[a[l]],o[a[l*2]]);l=l*2;}
return l;
}
}
return l;
}
int main()
{
for(f>>n;n>0;--n)
{
f>>q;
if(q==3)g<<v[a[1]]<<'\n';
else
{
f>>x;
if(q==1)
{
++k;++N;a[k]=N;v[N]=x;o[N]=k;
UP(k);
}
else
{
x=o[x];
swap(a[x],a[k]);swap(o[a[x]],o[a[k]]);
--k;
int t=UP(x);
if(t>=x)
{
DOWN(x);
}
}
}
//for(int i=1;i<=k;++i)cout<<v[a[i]]<<' ';cout<<'\n';
//for(int i=1;i<=N;++i)cout<<v[i]<<' ';cout<<'\n';
//for(int i=1;i<=N;++i)cout<<o[i]<<' ';cout<<'\n';cout<<'\n';
}
}