#include<bits/stdc++.h>
using namespace std;
const int N=10005;
int q,op,v,c;
int val[N],ls[N],rs[N],cnt[N],siz[N];
int queryrink(int x)
{
if(x==0) return 0;
if(v==val[x]) return siz[ls[x]]+1;
if(v>val[x]) return cnt[x]+siz[ls[x]]+queryrink(rs[x]);
if(v<val[x]) return queryrink(ls[x]);
}
int querykth(int x)
{
if(v>siz[ls[x]])
{
v-=siz[ls[x]];
if(v<=cnt[x]) return val[x];
else
{
v-=cnt[x];
querykth(rs[x]);
}
}
else querykth(ls[x]);
}
int queryfr(int x)
{
if(cnt[x]==0) return -2147483647;
if(v<=val[x]) return queryfr(ls[x]);
return max(val[x],queryfr(rs[x]));
}
int queryta(int x)
{
if(cnt[x]==0) return 2147483647;
if(v>=val[x]) return queryta(rs[x]);
return min(val[x],queryta(ls[x]));
}
void insert(int x)
{
siz[x]++;
if(v==val[x])
{
cnt[x]++;
return;
}
if(v<val[x])
{
if(ls[x]==0)
{
val[++c]=v;
siz[c]=1;
cnt[c]=1;
ls[x]=c;
return;
}
else insert(ls[x]);
}
else
{
if(rs[x]==0)
{
val[++c]=v;
siz[c]=1;
cnt[c]=1;
rs[x]=c;
return;
}
else insert(rs[x]);
}
}
int main(){
cin >> q;
for(int i=1;i<=q;i++)
{
cin >> op >> v;
if(op==1) cout << queryrink(1) << "\n";
if(op==2) cout << querykth(1) << "\n";
if(op==3) cout << queryfr(1) << "\n";
if(op==4) cout << queryta(1) << "\n";
if(op==5)
{
if(c==0)
{
val[1]=v;
cnt[1]=1;
siz[1]=1;
c++;
}
else insert(1);
}
}
return 0;
}