#include<bits/stdc++.h>
using namespace std;
long long a[1000005],n,tt;
void max_heapify(long long a[], long long i, long long n){
long long l = i * 2;
long long r = i * 2 + 1;
long long largest = i;
if(l <= n && a[l] > a[i]) largest = l;
if(r <= n && a[r] > a[largest]) largest = r;
if(largest != i){
swap(a[i], a[largest]);
max_heapify(a, largest, n);
}
}
void build_heap(long long a[], long long n){
for(long long i = n / 2; i >= 1; i--) max_heapify(a,i,n);
}
void heapSort(long long a[], long long n){
build_heap(a,n);
for(long long i = n; i >= 2; i--){
swap(a[1],a[i]);
max_heapify(a,1,i - 1);
}
}
int main(){
scanf("%lld",&n);
for(long long i = 1; i <= n; i++){
long long t,t1;
scanf("%lld",&t);
if(t == 1){
tt++;
scanf("%lld",&a[tt]);
heapSort(a,tt);
} else if(t == 2){
printf("%lld\n",a[1]);
} else{
swap(a[1],a[tt]);
tt--;
heapSort(a,tt);
}
}
return 0;
}