#include<bits/stdc++.h>
using namespace std;
const int N=2e5+2;
mt19937 rd(time(0));
int n,root,sz[N],val[N],cnt[N],ls[N],rs[N],pri[N],idx;
void push_up(int rt)
{
sz[rt]=sz[ls[rt]]+sz[rs[rt]]+cnt[rt];
}
void split(int rt,int p,int &rt1,int &rt2)
{
if(!rt)
{
rt1=rt2=0;
return;
}
if(sz[ls[rt]]>=p)
{
split(ls[rt],p,rt1,rt2);
ls[rt]=rt2;
push_up(rt);
rt2=rt;
}
else
{
split(rs[rt],p-sz[ls[rt]]-cnt[rt],rt1,rt2);
rs[rt]=rt1;
push_up(rt);
rt1=rt;
}
}
int merge(int rt1,int rt2)
{
if(!rt1)
return rt2;
if(!rt2)
return rt1;
if(pri[rt1]<pri[rt2])
{
rs[rt1]=merge(rs[rt1],rt2);
push_up(rt1);
return rt1;
}
else
{
ls[rt2]=merge(rt1,ls[rt2]);
push_up(rt2);
return rt2;
}
}
int rk(int rt,int v)
{
if(!rt)
return 0;
if(v<val[rt])
return rk(ls[rt],v);
else
return sz[ls[rt]]+cnt[rt]+rk(rs[rt],v);
}
void insert(int v)
{
int p=rk(root,v);
int rt1,rt2,rt3,rt;
split(root,p,rt,rt3);
split(rt,p-1,rt1,rt2);
if(val[rt2]==v)
cnt[rt2]++,sz[rt2]++;
else
{
val[++idx]=v,sz[idx]=cnt[idx]=1,pri[idx]=rd();
rt2=merge(rt2,idx);
}
root=merge(merge(rt1,rt2),rt3);
}
void del(int v)
{
int p=rk(root,v);
int rt1,rt2,rt3,rt;
split(root,p,rt,rt3);
split(rt,p-1,rt1,rt2);
cnt[rt2]--,sz[rt2]--;
if(cnt[rt2]==0)
root=merge(rt1,rt3);
else
root=merge(merge(rt1,rt2),rt3);
}
int kth(int p)
{
int rt1,rt2,rt3,rt;
split(root,p,rt,rt3);
split(rt,p-1,rt1,rt2);
root=merge(merge(rt1,rt2),rt3);
return val[rt2];
}
int qian(int v)
{
return kth(rk(root,v-1));
}
int hou(int v)
{
return kth(rk(root,v)+1);
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0),cout.tie(0);
cin>>n;
int u,op;
for(int i=1;i<=n;i++)
{
cin>>op>>u;
if(op==1)
insert(u);
if(op==2)
del(u);
if(op==3)
cout<<rk(root,u-1)+1<<endl;
if(op==4)
cout<<kth(u)<<endl;
if(op==5)
cout<<qian(u)<<endl;
if(op==6)
cout<<hou(u)<<endl;
}
}