#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<ctime>
using namespace std;
const int maxn=1e6+10,inf=1e9+10;
int N,a[maxn],ftop=0,root;
struct node{int l,r,v,v0,siz,cnt;}f[maxn];
int qd(){
int rt=0,k=0;char c=getchar();
while(c<'0'||c>'9') c=getchar(),k|=(c=='-');
while('0'<=c&&c<='9') rt=(rt<<3)+(rt<<1)+c-48,c=getchar();
return k?-rt:rt;
}
int rand32(){return (rand()<<16)|rand();}
void dfs(int t){
printf("ask %d:l=%d r=%d v=%d v0=%d siz=%d cnt=%d\n",t,f[t].l,f[t].r,f[t].v,f[t].v0,f[t].siz,f[t].cnt);
if(f[t].l){printf("%d->L\n",t);dfs(f[t].l);}
if(f[t].r){printf("%d->R\n",t);dfs(f[t].r);}
}
int ins(int v){f[++ftop]=(node){0,0,v,rand32(),1,1};return ftop;}
void pushup(int t){f[t].siz=f[t].cnt+f[f[t].l].siz+f[f[t].r].siz;}
void build(){root=ins(-inf);ins(inf);f[1].r=f[1].siz=2;}
void zig(int &t){//->
int _l=f[t].l;
f[t].l=f[_l].r,f[_l].r=t;
pushup(t),pushup(t=_l);
}
void zag(int &t){//<-
int _r=f[t].r;
f[t].r=f[_r].l,f[_r].l=t;
pushup(t),pushup(t=_r);
}
void change1(int &t,int v){//insert
if(!t){t=ins(v);return;}
f[t].siz++;
if(v==f[t].v) f[t].cnt++;
else if(v<f[t].v){
change1(f[t].l,v);
if(f[t].v0<f[f[t].l].v0) zig(t);
}
else{
change1(f[t].r,v);
if(f[t].v0<f[f[t].r].v0) zag(t);
}
}
void change2(int &t,int v){//delete
if(!t) return;
if(f[t].v==v){
if(f[t].cnt>1) f[t].cnt--;
else if(!f[t].l||!f[t].r) t=f[t].l+f[t].r;
else if(f[f[t].l].v0>f[f[t].r].v0) zig(t),change2(f[t].r,v);
else zag(t),change2(f[t].l,v);
}
else change2(v<f[t].v?f[t].l:f[t].r,v);
pushup(t);
}
int ask1(int t,int v){//value->rank
// printf("ask %d\n",t);
if(!t) return 0;
if(v<f[t].v) return ask1(f[t].l,v);
if(v>f[t].v) return f[f[t].l].siz+f[t].cnt+ask1(f[t].r,v);
return f[f[t].l].siz+1;
}
int ask2(int t,int v){//rank->value
if(!t) return inf;
if(v<=f[f[t].l].siz) return ask2(f[t].l,v);
if(v>f[f[t].l].siz+f[t].cnt) return ask2(f[t].r,v-f[f[t].l].siz-f[t].cnt);
return f[t].v;
}
int ask3(int t,int v){//_v
int rt;
while(t){
if(f[t].v<v) rt=f[t].v,t=f[t].r;
else t=f[t].l;
}
return rt;
}
int ask4(int t,int v){//v_
int rt;
while(t){
if(f[t].v>v) rt=f[t].v,t=f[t].l;
else t=f[t].r;
}
return rt;
}
int main(){
// freopen("in.txt","r",stdin);
// freopen("out.txt","w",stdout);
srand(time(0));build();
N=qd();
while(N--){
int x=qd(),v=qd();
if(x==1) change1(root,v);
else if(x==0) dfs(root);
else if(x==2) change2(root,v);
else if(x==3) printf("%d\n",ask1(root,v)-1);
else if(x==4) printf("%d\n",ask2(root,v+1));
else if(x==5) printf("%d\n",ask3(root,v));
else printf("%d\n",ask4(root,v));
}
return 0;
}
WA6 7 8 9 10 11