#include <bits/stdc++.h>
using namespace std;
int a[1000010];int n;int i;
void up(int p)
{
while(p>1)
{
if(a[p]<a[p/2]) swap(a[p],a[p/2]),p/=2;
else break;
}
}
void insert(int val)
{
a[++i] = val;
up(i);
}
void down(int p)
{
int s = p*2;
while(s <= i)
{
if(s>i&&a[s]<a[s+1]) s++;
if(a[s]>a[p])
{
swap(a[s],a[p]);
p=s,s=p*2;
}
else{
break;
}
}
}
void Remove()
{
a[1]=a[i--];
down(1);
}
int gettop()
{
return a[1];
}
int main()
{
cin >> n;
while(n--)
{
int t,x;
cin >> t;
if(t==1) cin >> x,insert(x);
if(t==2) cout << gettop() << endl;
if(t==3) Remove();
}
}