#include <iostream>
#include <fstream>
using namespace std;
int HP[200000],Val[200000],P[200000],nhp,np,nv, nr;
void pushHP(int x)
{
nr++;
Val[nr] = x;
nhp++;
HP[nhp] = nr;
P[nr] = nhp;
int i = nhp;
while(i > 1 && Val[HP[i]] < Val[HP[i/2]])
{
int aux = HP[i];
HP[i] = HP[i/2];
HP[i/2] = aux;
P[HP[i]] = i;
P[HP[i/2]] = i/2;
i = i/2;
}
}
void popHP(int ord)
{
Val[ord] = -1;
int poz = P[ord];
HP[poz] = HP[nhp];
P[HP[nhp]] = poz;
nhp--;
P[ord] = -1;
int i = poz, j = 1;
while (i < nhp && j )
{
j = 0;
if (2*i <= nhp && Val[HP[2*i]] < Val[HP[i]])
j = 2*i;
if (2*i + 1 <= nhp && Val[HP[2*i+1]] < Val[HP[i]] && Val[HP[2*i+1]] < Val[HP[2*i]])
j = 2*i + 1;
if (j)
{
int aux = HP[i];
HP[i] = HP[j];
HP[j] = aux;
P[HP[i]] = i;
P[HP[j]] = j;
i = j;
}
}
}
int main()
{
ifstream fin("heapuri.in");
ofstream fout("heapuri.out");
int N,i,x,op,ord;
fin >> N;
for (i = 0; i < N; i++)
{
fin >> op;
if (op == 1)
{
fin >> x;
pushHP(x);
}
else if (op == 2)
{
fin >> ord;
popHP(ord);
}
else if (op == 3)
fout << Val[HP[1]] << '\n';
}
fin.close();
fout.close();
return 0;
}