rt,44分
#include<bits/stdc++.h>
using namespace std;
int heap[1000005],cnt;
int read()
{
int x=0;char ch=' ';
while(!isdigit(ch))
ch=getchar();
while(isdigit(ch))
x=x*10+ch-48,
ch=getchar();
return x;
}
void write(int x)
{
if(x>9)write(x/10);
putchar(x%10+48);
}
void add(int x)
{
heap[++cnt]=x;
int ind=cnt;
while(ind>1 and heap[ind]<heap[ind>>1])
{swap(heap[ind],heap[ind>>1]);ind>>=1;}
}
void mov()
{
swap(heap[1],heap[cnt]);
heap[cnt--]=0;int ind=1;
while((ind<<1)<=cnt)
{
ind<<=1;
if(ind&1<=cnt and heap[ind]>heap[ind&1])ind&=1;
if(heap[ind]>heap[ind>>1])break;
swap(heap[ind],heap[ind>>1]);
}
}
int main()
{
int n;cin>>n;while(n--)
{
int op=read();
if(op==1)
{int t=read();add(t);}
else if(op==2)
{write(heap[1]);putchar('\n');}
else mov();
}
return 0;
}