#include <bits/stdc++.h>
#define in "heapuri.in"
#define out "heapuri.out"
using namespace std;
ifstream fin(in);
ofstream fout(out);
int n;
multiset <int> S;
map <int,int> M;
int main()
{
int k = 0,i,op,x,val;
multiset <int> :: iterator it;
fin >> n;
for (i = 1; i <= n; i++)
{
fin >> op;
if (op == 1)
{
fin >> x;
M[++k] = x;
S.insert(x);
}
else if (op == 3) fout << *S.begin() << "\n";
else
{
fin >> x;
val = M[x];
M.erase(x);
it = S.find(val);
S.erase(it);
}
}
fin.close();
fout.close();
return 0;
}