#include<bits/stdc++.h>
using namespace std;
int h[1000005];
int n, op, x;
void up(int p)
{
while(p / 2 != 0)
{
if(h[p] < h[p / 2])
{
swap(h[p], h[p / 2]);
p /= 2;
}
else
break;
}
}
void down(int p)
{
while(2 * p <= n)
{
int tmp = 2 * p;
if(tmp + 1 <= n && h[tmp] > h[tmp + 1])
tmp ++;
if(h[p] > h[tmp])
{
swap(h[p], h[tmp]);
p = tmp;
}
else
break;
}
}
void push(int x)
{
h[++ n] = x;
up(n);
}
void pop()
{
swap(h[1], h[n]);
n --;
down(1);
}
int main()
{
int sum = 0;
scanf("%d", &n);
for(int i = 1; i <= n; i ++)
{
scanf("%d", &op);
if(op == 1)
{
scanf("%d", &x);
push(x);
sum ++;
}
if(op == 2)
{
up(sum);
printf("%d\n", h[1]);
}
if(op == 3)
pop();
}
return 0;
}