#include<bits/stdc++.h>
using namespace std;
namespace acac
{
struct node
{
int ls,rs,sz,num,v,tag,cnt;
bool zl[30];//贫穷用
char ch;
}tree[100010];
int cnt,rt,out;
void new_node(int &va,int w,char ch)
{
tree[++cnt].sz=1;
va=cnt;
tree[va].cnt=1;
tree[cnt].v=w;
// tree[cnt].ch=ch;
// tree[cnt].zl[ch-'a']=1;
tree[cnt].num=rand();
}
void pu(int u)
{
tree[u].sz=tree[tree[u].ls].sz+tree[tree[u].rs].sz+tree[u].cnt;
// for(int i=1;i<=26;i++)
// {
// tree[u].zl[i]=tree[tree[u].ls].zl[i]|tree[tree[u].rs].zl[i];
// }
}
void pd(int u)
{
if(tree[u].tag)
{
tree[tree[u].ls].tag^=1;
tree[tree[u].rs].tag^=1;
swap(tree[tree[u].ls].ls,tree[tree[u].ls].rs);
swap(tree[tree[u].ls].ls,tree[tree[u].ls].rs);
tree[u].tag=0;
}
}
void print(int u)
{
if(!u)return ;
print(tree[u].ls);
cout<<u<<' '<<tree[u].sz<<' '<<tree[u].ls<<' '<<tree[u].rs<<endl;
print(tree[u].rs);
}
void sp(int u,int &l,int &r,int sum)
{
if(!u)
{
l=r=0;
return ;
}
// pd(u);
// cout<<tree[u].v<<endl;
if(tree[u].v<=sum)
{
l=u;
sp(tree[u].rs,tree[u].rs,r,sum);
}
else
{
r=u;
sp(tree[u].ls,l,tree[u].ls,sum);
}
pu(u);
return ;
}
void me(int &u,int l,int r)
{
if(!l||!r)
{
u=l+r;
return ;
}
if(tree[l].num>tree[r].num)
{
u=l;
me(tree[u].rs,tree[l].rs,r);
// pd(u);
}
else
{
u=r;
// pd(u);
me(tree[u].ls,l,tree[r].ls);
}
pu(u);
}
void ins(int v)
{
int rt1,rt2,rt3,rt4;
sp(rt,rt1,rt2,v);
// print(rt1);
// cout<<endl;
sp(rt1,rt3,rt4,v-1);
if(!rt4)new_node(rt4,v,'a');
else tree[rt4].cnt++;
me(rt1,rt3,rt4);
me(rt,rt1,rt2);
}
void del(int v)
{
int rt1,rt2,rt3,rt4;
sp(rt,rt1,rt2,v);
sp(rt1,rt3,rt4,v-1);
tree[rt4].cnt--;
if(!tree[rt4].cnt)me(rt4,tree[rt4].ls,tree[rt4].rs);
me(rt1,rt3,rt4);
me(rt,rt1,rt2);
}
int rkk(int rt,int k)
{
int u=rt;
//if(out==788)print(rt),cout<<endl;
while(1)
{
//if(out==788) cout<<tree[u].v<<endl;
if(tree[tree[u].ls].sz>=k)u=tree[u].ls;
else if(tree[tree[u].ls].sz+tree[u].cnt>=k)return tree[u].v;
else k-=tree[tree[u].ls].sz+tree[u].cnt,u=tree[u].rs;
}
}
int krk(int k)
{
int rt1,rt2;
sp(rt,rt1,rt2,k-1);
int ans=tree[rt1].sz+1;
me(rt,rt1,rt2);
return ans;
}
int pre(int k)
{
int rt1,rt2;
sp(rt,rt1,rt2,k-1);
// print(rt1);
// cout<<endl;
int ans=rkk(rt1,tree[rt1].sz);
me(rt,rt1,rt2);
return ans;
}
int nex(int k)
{
int rt1,rt2;
sp(rt,rt1,rt2,k);
// print(rt2);
// cout<<endl;
int ans=rkk(rt2,1);
me(rt,rt1,rt2);
return ans;
}
int main()
{
srand(1111);
int n;
scanf("%d",&n);
while(n--)
{
int op,x;
scanf("%d%d",&op,&x);
if(op==1)ins(x);
else if(op==2)del(x);
else if(op==3)cout<<krk(x)<<'\n';
else if(op==4)cout<<rkk(rt,x)<<'\n';
else if(op==5)cout<<pre(x)<<'\n';
else cout<<nex(x)<<'\n';
// if(op>2)out++;
// if(out==789)
// {
// cout<<op;
// return 0;
// }
//print(rt);
}
return 0;
}
}
int main()
{
// freopen("P3369_8.in","r",stdin);
// freopen("P3369.out","w",stdout);
acac::main();
return 0;
}