#include<bits/stdc++.h>
using namespace std;
int n,len,g;
int a[100010];
//int h(int b){
// if(a[b]>=a[b/2]){
// return 0;
// }
// else{
// swap(a[b],a[b/2]);
// h(b/2);
// }
//}
//int hf(int b){
// if(a[b]>=a[b*2]&&a[b]>=a[b*2+1]){
// return 0;
// }
// else if(a[b*2]>a[b*2+1]){
// swap(a[b],a[b*2]);
// h(b*2);
// }
// else {
// swap(a[b],a[b*2+1]);
// h(b*2+1);
// }
//}
int main(){
// freopen("P3378_4.in","r",stdin);
cin>>n;
for(int i=1;i<=n;i++){
int op;
cin>>op;
if(op==1){
len++;
cin>>a[len];
int b=len;
for(;;){
if(a[b]>=a[b/2]){
break;
}
else{
swap(a[b],a[b/2]);
b/=2;
}
}
// h(len);
// for(int i=1;i<=len;i++){
// cout<<a[i]<<" ";
// }
// cout<<endl;
}
if(op==2){
cout<<a[1]<<endl;
}
if(op==3){
a[1]=a[len];
a[len]=0;
len--;
// hf(1);
// for(int i=1;i<=len;i++){
// cout<<a[i]<<" ";
// }
// cout<<endl;
int b=1;
for(;;){
int c=min(a[b*2],a[b*2+1]);
if(a[b]<=c){
break;
}
if(c==0){
if(a[b*2]!=0&&a[b]>=a[b*2]){
swap(a[b],a[b*2]);
b*=2;
}
else{
break;
}
}
else if(a[b*2]<a[b*2+1]){
swap(a[b],a[b*2]);
b*=2;
}
else{
swap(a[b],a[b*2+1]);
b*=2;
b+=1;
}
// for(int i=1;i<=len;i++){
// cout<<a[i]<<" ";
// }
// cout<<endl;
}
// for(int i=1;i<=len;i++){
// cout<<a[i]<<" ";
// }
// cout<<endl;
}
}
}