#include<bits/stdc++.h>
#define alpha 0.75
using namespace std;
const int N=1e5+5;
int n,tot,rt,dfn[N];
struct Node{int lc,rc,val,cnt,siz,sizc,sizd;}tree[N];
void pushup(int u){
tree[u].siz=tree[tree[u].lc].siz+tree[tree[u].rc].siz+1;
tree[u].sizc=tree[tree[u].lc].sizc+tree[tree[u].rc].sizc+tree[u].cnt;
tree[u].sizd=tree[tree[u].lc].sizd+tree[tree[u].rc].sizd+(tree[u].cnt!=0);
}
bool check(int u){
return tree[u].cnt&&(alpha*tree[u].siz<=1.0*max(tree[tree[u].lc].siz,tree[tree[u].rc].siz)||1.0*tree[u].sizd<=alpha*tree[u].siz);
}
void dfs(int u,int &cur){
if(!u) return;
dfs(tree[u].lc,cur);
if(tree[u].cnt) dfn[++cur]=u;
dfs(tree[u].rc,cur);
}
void build(int &u,int l,int r){
if(l>r){
u=0;
return;
}
int mid=l+r>>1;
u=dfn[mid];
build(tree[u].lc,l,mid-1);
build(tree[u].rc,mid+1,r);
pushup(u);
}
void debug(int u);
void rebuild(int &u){
if(check(u)){
int cur=0;
dfs(u,cur);
build(u,1,cur);
}
}
int create(int w){
tree[++tot]={0,0,w,1,1,1,1};
return tot;
}
void insert(int &u,int w){
if(!u){
u=create(w);
return;
}
if(tree[u].val==w) tree[u].cnt++;
else if(tree[u].val>w) insert(tree[u].lc,w);
else insert(tree[u].rc,w);
pushup(u);
rebuild(u);
}
void remove(int &u,int w){
if(!u) return;
if(tree[u].val==w&&tree[u].cnt) tree[u].cnt--;
else if(tree[u].val>w) insert(tree[u].lc,w);
else insert(tree[u].rc,w);
pushup(u);
rebuild(u);
}
int rnk(int u,int w){
if(!u) return 0;
if(tree[u].val==w&&tree[u].cnt) return tree[tree[u].lc].sizc;
else if(tree[u].val>w) return rnk(tree[u].lc,w);
else return tree[tree[u].lc].sizc+tree[u].cnt+rnk(tree[u].rc,w);
}
int kth(int u,int w){
if(!u) return 0;
if(tree[tree[u].lc].sizc<w&&w<=tree[tree[u].lc].sizc+tree[u].cnt) return tree[u].val;
else if(w<=tree[tree[u].lc].sizc) return kth(tree[u].lc,w);
else return kth(tree[u].rc,w-tree[tree[u].lc].sizc-tree[u].cnt);
}
int pre(int u,int w){return kth(rt,rnk(rt,w));}
int nxt(int u,int w){return kth(rt,rnk(rt,w)+2);}
void debug(int u){
cout<<"rt:"<<rt<<endl;
for(int u=1;u<=tot;u++) cout<<u<<" "<<tree[u].lc<<" "<<tree[u].rc<<" "<<tree[u].val<<endl;
}
int main(){
scanf("%d",&n);
for(int i=1,op,x;i<=n;i++){
scanf("%d%d",&op,&x);
if(op==1) insert(rt,x);
if(op==2) remove(rt,x);
if(op==3) printf("%d\n",rnk(rt,x)+1);
if(op==4) printf("%d\n",kth(rt,x));
if(op==5) printf("%d\n",pre(rt,x));
if(op==6) printf("%d\n",nxt(rt,x));
}
return 0;
}