#include <fstream>
#define nmax 200001
using namespace std;
ifstream fin("heapuri.in");
ofstream fout("heapuri.out");
int n,H[nmax],nr;
int ad[nmax],nrad;
void Comb(int i)
{int v=H[i],tata=i,fiu=2*i;
while(fiu<=nr)
{if(fiu<nr)
if(H[fiu]>H[fiu+1]) fiu++;
if(v>H[fiu])
{H[tata]=H[fiu];
tata=fiu;
fiu=2*fiu;
}
else fiu=nr+1;
}
H[tata]=v;
}
void Extract(int x)
{int v=H[x];
H[x]=H[nr];
nr--;
Comb(x);
}
void Citire()
{int i,op,x,j;
fin>>n;
for(i=1;i<=n;i++)
{fin>>op;
if(op==1)
{fin>>x; nr++; H[nr]=x;
Comb(nr);
nrad++; ad[nrad]=x;
}
if(op==2)
{fin>>x;
for(j=1;j<=nr;j++)
if(ad[x]==H[j])
{Extract(j);break;}
}
if(op==3)
fout<<H[1]<<"\n";
}
}
int main()
{
Citire();
return 0;
}