#include<bits/stdc++.h>
using namespace std;
int heap[100005];
int n;
void f(int k,int n){
while(k*2<=n){
int j=k*2;
if(k*2+1<=n&&heap[j]>heap[k*2+1])j++;
if(heap[k]>heap[j])swap(heap[k],heap[j]),k=j;
else break;
}
}
void build(int n){
for(int i=n/2;i>0;i--)
f(i,n);
}
void heapsort(int size){
build(size);
while(size>1){
swap(heap[1],heap[size]);
size--;
f(1,size);
}
}
int main(){
cin>>n;
int size=0,op,x;
while(n--){
scanf("%d",&op);
if(op==1){
scanf("%d",&x);
size++;
heap[size]=x;
f(1,size);
}
if(op==2) printf("%d\n",heap[size]);
if(op==3) size--;
heapsort(size);
}
for(int i=1;i<=n;i++)cin>>heap[i];
heapsort(n);
for(int i=1;i<=n;i++)cout<<heap[i]<<" ";
return 0;
}