#include <fstream>
#define DIM 200010
using namespace std;
ifstream fin ("heapuri.in" );
ofstream fout("heapuri.out");
int N, Q, i, j, k, ok, c, cod;
int V[DIM], W[DIM], x, p, val;
int F[DIM], aux, nr;
void swap(int a, int b){
aux = V[a]; V[a] = V[b]; V[b] = aux;
aux = W[a]; W[a] = W[b]; W[b] = aux;
}
void Shift(int c){
p = c / 2;
while(p != 0){
if(V[p] > V[c]){
swap(p, c);
F[W[c]] = c;
c = p; p /= 2;
}
else
break;
}
F[W[c]] = c;
return;
}
void Percolate(int p){
c = p * 2;
while(c <= N){
if(c + 1 <= N && V[c] > V[c+1])
c ++;
if(V[p] > V[c]){
swap(p, c);
F[W[p]] = p;
p = c; c *= 2;
}
else
break;
}
F[W[p]] = p;
return;
}
void Heap_Expert(){
fin >> Q;
for(k = 1; k <= Q; k ++){
fin >> cod;
if(cod == 1){
fin >> x;
N ++;
V[N] = x;
W[N] = ++nr;
Shift(N);
}
if(cod == 2){
fin >> x;
val = F[x];
F[W[val]] = 0;
swap(val, N);
V[N] = W[N] = 0;
F[W[val]] = val;
N --;
if(V[val/2] > V[val])
Shift(val);
else
Percolate(val);
}
if(cod == 3)
fout << V[1] << "\n";
}
return;
}
int main(){
Heap_Expert();
return 0;
}