QAQ
#include <bits/stdc++.h>
#define N 100005
using namespace std;
int n,root,son[N][2],cnt[N],val[N],t[N],f[N],Q,idx;
int search(int p,int x)
{
while(val[p]!=x)
{
if(x<val[p])
{
if(son[p][0])
{
p=son[p][0];
}
else
{
return p;
}
}
else if(x>val[p])
{
if(son[p][1])
{
p=son[p][1];
}
else
{
return p;
}
}
}
return p;
}
void rotate(int x)
{
int y=f[x],z=f[f[x]],w=son[y][1]==x;
son[z][son[z][1]==y]=x;
f[x]=z;
son[y][w]=son[x][w^1];
f[son[x][w^1]]=y;
son[x][w^1]=y;
f[y]=x;
cnt[y]=cnt[son[y][1]]+cnt[son[y][0]]+t[y];
cnt[x]=cnt[son[x][0]]+cnt[son[x][1]]+t[x];
}
void splay(int x)
{
while(f[x])
{
int y=f[x],z=f[f[x]];
if(z==0)
{
rotate(x);
}
else
{
if(son[z][0]==y^son[y][0]==x)
{
rotate(x);
}
else
{
rotate(y);
}
rotate(x);
}
}
root=x;
}
void ins(int x)
{
if(idx==0)
{
idx=1;
root=1;
t[1]=1;
val[1]=x;
cnt[1]=1;
}
else
{
int k=search(root,x),u;
if(val[k]==x)
{
t[k]++;
u=k;
}
else
{
val[++idx]=x;
f[idx]=k;
son[k][x>val[k]]=idx;
t[idx]=1;
cnt[idx]=1;
u=idx;
}
while(k)
{
cnt[k]++;
k=f[k];
}
splay(u);
}
}
void del(int x)
{
int k=search(root,x);
if(val[k]==x)
{
splay(k);
if(t[k]>1)
{
t[k]--;
}
else
{
if(!son[k][0])
{
root=son[k][1];
f[root]=0;
}
else if(!son[k][1])
{
root=son[k][0];
f[root]=0;
}
else
{
int p=search(son[k][0],0x3f3f3f3f);
splay(p);
f[son[k][1]]=p;
son[p][1]=son[k][1];
cnt[root]--;
}
son[k][0]=son[k][1]=f[k]=val[k]=cnt[k]=t[k]=0;
}
}
}
int pos(int x)
{
int k=search(root,x);
splay(k);
return cnt[son[k][0]]+1;
}
int num(int x)
{
int k=root;
while(x<=cnt[son[k][0]]||x>cnt[son[k][0]]+t[k])
{
if(x<=cnt[son[k][0]])
{
k=son[k][0];
}
else
{
x-=cnt[son[k][0]]+t[k];
k=son[k][1];
}
}
return val[k];
}
int pre(int x)
{
int k=search(root,x);
if(val[k]<x)
{
return val[k];
}
splay(k);
return val[search(son[k][0],0x3f3f3f3f)];
}
int suc(int x)
{
int k=search(root,x);
if(val[k]>x)
{
return val[k];
}
splay(k);
return val[search(son[k][1],0xc0c0c0c0)];
}
int main()
{
cin>>Q;
while(Q--)
{
int opt,x;
cin>>opt>>x;
switch(opt)
{
case 1:
ins(x);
break;
case 2:
del(x);
break;
case 3:
cout<<pos(x)<<endl;
break;
case 4:
cout<<num(x)<<endl;
break;
case 5:
cout<<pre(x)<<endl;
break;
case 6:
cout<<suc(x)<<endl;
break;
}
}
return 0;
}