#include <cstdio>
#include <set>
#include <vector>
using namespace std;
int N, i, x, op;
struct comp {
bool operator()(const int &x, const int &y)
{
return x < y;
}
};
vector <int> v;
multiset <int, comp> multime;
multiset <int, comp> :: iterator it;
int main( void )
{
freopen("heapuri.in", "r", stdin);
freopen("heapuri.out", "w", stdout);
scanf("%d\n", &N);
for(i=1; i <= N;i++)
{
scanf("%d", &op);
if (op == 1)
{
scanf("%d", &x);
v.push_back(x);
multime.insert(x);
}
else
if (op ==2 )
{
scanf("%d\n", &x);
multime.erase(v[x-1]);
}
else
{
it = multime.begin();
printf("%d\n", *it);
}
}
return 0;
}