#include<bits/stdc++.h>
#define N 1000010
using namespace std;
int heap[N],now=0;
inline void push_down(int k){
int p;
while(k<<1<=now){
p=k<<1;
if(heap[p]>heap[p|1])p|=1;
if(heap[p]<heap[k])swap(heap[k],heap[p]);
else break;
k=p;
}
}
inline void push_up(int k){
int p;
while(k>>1){
p=k>>1;
if(heap[k]<heap[p])swap(heap[k],heap[p]);
k=p;
}
}
inline void insert(int k){
heap[++now]=k;
push_up(now);
}
inline void pop( ){
swap(heap[1],heap[now--]);
push_down(1);
}
inline void print( ){
cout<<heap[1]<<endl;
}
int main( ){
std::ios::sync_with_stdio(0);
int s;
int x;
int pp;
cin>>pp;
while(pp--){
cin>>s;
if(s==2)print( );
else if(s==3)pop( );
else if(s==1){
cin>>x;
insert(x);
}
}
}