#include<bits/stdc++.h>
using namespace std;
int n,tot,root,ans;
struct dog{int data,num,l,r,ln,rn,fa;}tree[3276800];
#define data(i) tree[i].data
#define num(i) tree[i].num
#define ln(i) tree[i].ln
#define rn(i) tree[i].rn
#define ls(i) tree[i].l
#define rs(i) tree[i].r
#define fa(i) tree[i].fa
#define il inline
il void zag(int x){
int y=fa(x);
rs(y)=ls(x);
if(ls(x))fa(ls(x))=y;
fa(x)=fa(y);
if(fa(y)) if(y==ls(fa(y)))ls(fa(y))=x;else rs(fa(y))=x;
ls(x)=y,fa(y)=x,rn(y)=ln(x),ln(x)=rn(y)+ln(y)+num(y);
}
il void zig(int x){
int y=fa(x);
ls(y)=rs(x);
if(rs(x))fa(rs(x))=y;
fa(x)=fa(y);
if(fa(y)) if(y==ls(fa(y)))ls(fa(y))=x;else rs(fa(y))=x;
rs(x)=y,fa(y)=x,ln(y)=rn(x),rn(x)=rn(y)+ln(y)+num(y);
}
il void splay(int x){
while(fa(x)){
if(ls(fa(x))==x)zig(x);
else zag(x);
}
root=x;
}
il int find(int x){
int p=root;
while(p){
if(data(p)==x){splay(p);return 1;}
else if(data(p)<x)p=ls(p);
else p=rs(p);
}
}
il int finddid(int k){
int p=root;
if(ln(p)+rn(p)+1<k)return -1;
while(1){
if(rn(p)+1==k)return data(p);
else if(rn(p)>=k)p=rs(n);
else {k=k-rn(p)-1;p=ls(p);}
}
}
il void insert(int x){
int p=root,f;
while(p)
{
f=p;
if(data(f)==x){num(f)++;splay(f);return ;}
if(x<data(f)){ln(f)++;p=ls(f);}
else{rn(f)++;p=rs(f);}
}
tot++;
data(tot)=x;
fa(tot)=0;ls(tot)=0;rs(tot)=0;ln(tot)=0;rn(tot)=0;num(tot)=1;
if(root==0){root=tot;return ;}
fa(tot)=f;
if(x<=data(f))ls(f)=tot;
else rs(f)=tot;
splay(tot);
}
il void dlt(int p)
{
find(p);
p=root;
if(num(root)>1){num(root)--;return;}
if(!ls(p)&&!rs(p)){root=0;return ;}
if(!ls(p)){root=rs(p);fa(rs(p))=0;return ;}
if(!rs(p)){root=ls(p);fa(ls(p))=0;return ;}
int l=ls(p),r=rs(p);
p=ls(p);
fa(l)=0;
while(rs(p))p=rs(p);
splay(p);
rs(p)=r;fa(r)=p;
rn(p)=ln(r)+rn(r)+1;
}
il int maxinum(int p){
while(rs(p))p=rs(p);
return data(p);
}
il int mininum(int p){
while(ls(p))p=ls(p);
return data(p);
}
il int pred(int x){
find(x);
int p=ls(root);
while(p)
{
if(rs(p)==0)break;
p=rs(p);
}
if(p)return data(p);return -1;
}
il int succ(int x){
find(x);
int p=rs(root);
while(p)
{
if(ls(p)==0)break;
p=ls(p);
}
if(p!=0)return data(p);
return -1;
}
il void dfs(int tr){
if(data(tr)==0){
return;
}
dfs(ls(tr));
cout<<data(tr)<<' '<<num(tr)<<endl;
dfs(rs(tr));
}
main(){
cin>>n;
for(int i=1;i<=n;i++)
{
int op,k;
cin>>op>>k;
if(op==1)insert(k);
else if(op==2)dlt(k);
else if(op==3){insert(k);cout<<ln(root)<<endl;dlt(k);}
else if(op==4)cout<<finddid(k)<<endl;
else if(op==5){insert(k);cout<<pred(k)<<endl;dlt(k);}
else {insert(k);cout<<succ(k)<<endl;dlt(k);}
}
}
2WA1AC11TLE