#ifdef ONLINE_JUDGE
#define ___coding false
#else
#define ___coding true
#endif
#include<bits/stdc++.h>
#define UP(i,a,b) for(i=a;i<=(b);++i)
#define DN(i,a,b) for(i=a;i>=(b);--i)
#define up(i,a,b) for(i=a;i<(b);++i)
#define dn(i,a,b) for(i=a;i>(b);--i)
const int BUF_SIZE(1<<14);
typedef long long ll;typedef unsigned long long ull;typedef __int128 pll;bool ___f;char ___c,___a[45],*___p,___ibuf[BUF_SIZE+1],*___ib(___ibuf),*___ie(___ibuf),___obuf[BUF_SIZE+1],*___ob(___obuf),*___oe(___obuf+BUF_SIZE);inline char& gtch(){return ___ib==___ie&&(___ie=(___ib=___ibuf)+fread(___ibuf,1,BUF_SIZE,stdin),___ib==___ie)?*___ib=-1:*___ib++;}void ___flush(){fwrite(___obuf,1,___ob-___obuf,stdout);___ob=___obuf;}inline void ptch(char c){if(___ob==___oe)___flush();*___ob=c;++___ob;}void rd(bool &r){r=false;for(___c=gtch();___c<'0'||___c>'9';___c=gtch());for(;___c>='0'&&___c<='9';___c=gtch())r|=(___c!='0');}void rd(char &c){for(c=gtch();c==' '||c=='\r'||c=='\n';c=gtch());}inline void rd(int &r){r=___f=false;for(___c=gtch();___c<'0'||___c>'9';___c=gtch())___f=(___c=='-');for(;___c>='0'&&___c<='9';___c=gtch())r=(r<<3)+(r<<1)+(___c^'0');if(___f)r=~(r-1);}inline void rd(ll &r){r=___f=false;for(___c=gtch();___c<'0'||___c>'9';___c=gtch())___f=(___c=='-');for(;___c>='0'&&___c<='9';___c=gtch())r=(r<<3)+(r<<1)+(___c^'0');if(___f)r=~(r-1);}void rd(ull &r){r=0;for(___c=gtch();___c<'0'||___c>'9';___c=gtch());for(;___c>='0'&&___c<='9';___c=gtch())r=(r<<3)+(r<<1)+(___c^'0');}void rd(char *s){for(*s=gtch();*s==' '||*s=='\r'||*s=='\n';*s=gtch());for(;~*s&&*s!=' '&&*s!='\r'&&*s!='\n';++s,*s=gtch());*s=0;}void rd(pll &r){r=___f=false;for(___c=gtch();___c<'0'||___c>'9';___c=gtch())___f=(___c=='-');for(;___c>='0'&&___c<='9';___c=gtch())r=(r<<3)+(r<<1)+(___c^'0');if(___f)r=~(r-1);}void wt(char c){ptch(c);}inline void wt(int r){if(r==0)return ptch('0');if(r<0){ptch('-');r=~(r-1);}___p=___a;while(r!=0){*++___p=char(r%10)^'0';r/=10;}while(___p!=___a)ptch(*___p--);}inline void wt(ll r){if(r==0)return ptch('0');if(r<0){ptch('-');r=~(r-1);}___p=___a;while(r!=0){*++___p=char(r%10)^'0';r/=10;}while(___p!=___a)ptch(*___p--);}void wt(ull r){if(r==0)return ptch('0');___p=___a;while(r!=0){*++___p=char(r%10)^'0';r/=10;}while(___p!=___a)ptch(*___p--);}void wt(char* s){for(;*s;ptch(*s++));}inline void wt(const char* s){for(;*s;ptch(*s++));}void wt(pll r){if(r==0)return ptch('0');if(r<0){ptch('-');r=~(r-1);}___p=___a;while(r!=0){*++___p=char(r%10)^'0';r/=10;}while(___p!=___a)ptch(*___p--);}template<typename T,typename... P>inline void rd(T &a,P &...b){rd(a);rd(b...);}template<typename T,typename... P>inline void wt(T a,P ...b){wt(a);wt(b...);}template<typename T>void RD(T* a,int n){while(n--)rd(*a++);}template<typename T>T ___min(T &a,T &b){return a<b?a:b;}template<typename T,typename... P>T ___min(T &a,T &b,P &...c){return ___min(a,b=___min(b,c...));}template<typename T,typename... P>T min(T a,P ...b){return ___min(a,b...);}template<typename T>T ___max(T &a,T &b){return a>b?a:b;}template<typename T,typename... P>T ___max(T &a,T &b,P &...c){return ___max(a,b=___max(b,c...));}template<typename T,typename... P>T max(T a,P ...b){return ___max(a,b...);}
const int N(1e5+5);
int n;
struct node{
bool red;
int sz,vl;
node *ls,*rs,*fa;
};
struct red_black_tree{
node t[N],*root,*tot;
node* new_node(bool red,int k){
node *u=++tot;u->red=red;u->sz=1;u->vl=k;u->ls=u->rs=u->fa=t;
return u;
}
void push_u(node* u){
u->sz=u->ls->sz+u->rs->sz+1;
}
bool ls(node* u){
return u->fa->ls==u;
}
void rotate(node* u){
node *f(u->fa),*g(f->fa);
if(ls(u)){
f->ls=u->rs;
if(f->ls!=t)f->ls->fa=f;
u->rs=f;
}else{
f->rs=u->ls;
if(f->rs!=t)f->rs->fa=f;
u->ls=f;
}
if(g!=t){
ls(f)?g->ls=u:g->rs=u;
}else root=u;
f->fa=u;u->fa=g;
push_u(f);push_u(u);
}
void insert(int k){
node *u(root),*f,*g,*un;
if(root==t){
root=new_node(false,k);
return;
}
while(u!=t){
f=u;++f->sz;
u=(k<u->vl?u->ls:u->rs);
}
u=new_node(true,k);u->fa=f;
k<f->vl?f->ls=u:f->rs=u;
while(u->fa->red){
f=u->fa;g=f->fa;un=ls(f)?g->rs:g->ls;
if(un->red){
f->red=un->red=false;g->red=true;
u=g;
}else{
if(ls(u)^ls(f)){
rotate(u);u=f;f=u->fa;
}
rotate(f);
f->red=false;g->red=true;
break;
}
}
root->red=false;
}
void erase(int k){
node *u(root),*f,*s,*c,*d;
while(k!=u->vl){
--u->sz;u=(k<u->vl?u->ls:u->rs);
}
if(u->ls!=t&&u->rs!=t){
--u->sz;s=u->rs;
while(s->ls!=t){
--s->sz;s=s->ls;
}
u->vl=s->vl;u=s;
}
f=u->fa;
if(u->ls!=t||u->rs!=t){
s=(u->ls!=t?u->ls:u->rs);
if(u==root){
root=s;s->fa=t;
}else{
ls(u)?f->ls=s:f->rs=s;
s->fa=f;s->red=false;
}
}else if(u->red){
ls(u)?f->ls=t:f->rs=t;
}else if(u==root){
root=t;
}else{
while(u!=root){
f=u->fa;s=(ls(u)?f->rs:f->ls);c=(ls(u)?s->ls:s->rs);d=(ls(u)?s->rs:s->ls);
if(s->red){
rotate(s);s->red=false;f->red=true;
s=(ls(u)?f->rs:f->ls);c=(ls(u)?s->ls:s->rs);d=(ls(u)?s->rs:s->ls);
}
if(!c->red&&!d->red){
if(f->red){
f->red=false;s->red=true;
break;
}else{
s->red=true;
u=f;
}
}else{
if(!d->red){
rotate(c);c->red=false;s->red=true;
s=(ls(u)?f->rs:f->ls);c=(ls(u)?s->ls:s->rs);d=(ls(u)?s->rs:s->ls);
}
rotate(s);s->red=f->red;f->red=d->red=false;
break;
}
}
f=u->fa;
ls(u)?f->ls=t:f->rs=t;
root->red=false;
}
}
int less(int k){
int res(0);
node *u(root);
while(u!=t){
if(k<=u->vl)u=u->ls;
else{
res+=u->ls->sz+1;
u=u->rs;
}
}
return res;
}
int kth(int k){
node *u(root);
while(k!=u->ls->sz+1){
if(k<u->ls->sz+1)u=u->ls;
else{
k-=u->ls->sz+1;
u=u->rs;
}
}
return u->vl;
}
int pre(int k){
return kth(less(k));
}
int suc(int k){
return kth(less(k+1)+1);
}
void clear(){
root=tot=t;
}
void tra(node* u){
if(u!=t){
printf("<");
tra(u->ls);
printf(">%d,%c<",u->vl,u->red?'R':'B');
tra(u->rs);
printf(">");
}
}
void travel(){
tra(root);printf("\n");
}
}tree;
void ___main(){
int i,o,k;
tree.clear();
rd(n);
up(i,0,n){
if(i==898)tree.travel();
printf("i=%d\n",i);
rd(o,k);
switch(o){
case 1:tree.insert(k);break;
case 2:tree.erase(k);break;
case 3:wt(tree.less(k)+1,'\n');break;
case 4:wt(tree.kth(k),'\n');break;
case 5:wt(tree.pre(k),'\n');break;
case 6:wt(tree.suc(k),'\n');break;
}
}
}int main(){if(___coding)freopen("in.txt","r",stdin);___main();___flush();return 0;}