验证码rtwa祭
#include<cstdio>
#include<algorithm>
#define N 114514
#define inf 2147483647
using namespace std;
//Whindsers2022.6.29
struct Splay{
int f[N],size[N],chi[N][2],sum[N],val[N],root=0,cnt=0;
int son(int x){return chi[f[x]][1]==x;}
void update(int x){size[x]=size[chi[x][0]]+size[chi[x][1]]+sum[x];}
void connect(int x,int y,int son){f[x]=y,chi[y][son]=x;}
void rotate(int x){
int y=f[x],z=f[y],k=son(x),v=chi[x][!k];
connect(v,y,k),connect(x,z,son(y)),connect(y,x,!k);
update(y),update(x);
}
void splay(int x){for(int y;y=f[x];rotate(x))if(f[y])rotate(son(x)!=son(y)?x:y);root=x;}
int find(int x){//查找权值为x的结点
for(int p=root;p;p=chi[p][x>val[p]])if(x==val[p]){splay(p);return p;}
return -1;
}
int rank(int x){return size[chi[find(x)][0]]+1;}
int kth(int k){
int p=root;
while(p){
if(k==size[chi[p][0]]+1)return val[p];
if(k<=size[chi[p][0]])p=chi[p][0];
else k-=size[chi[p][0]]+1,p=chi[p][1];
}
return inf;
}
int newnode(int x){val[++cnt]=x,size[cnt]=sum[cnt]=1;return cnt;}
void insert(int x){
if(!root)return void(root=newnode(x));int k=0;
for(int p=root;p;p=chi[p][x>val[p]]){
k=p;
if(x==val[p])return void(++sum[p]);
}
connect(newnode(x),k,x>val[k]);
splay(cnt);
}
void del(int x){
int p=find(x);
if(p==-1)return;
if(sum[p]>1)return void(--sum[p]);
p=chi[p][0];while(chi[p][1])p=chi[p][1];
splay(p);
connect(chi[chi[p][1]][1],p,1);
update(p);
}
int prev(int x){
insert(x);
int p=chi[root][0];
while(chi[p][1])p=chi[p][1];
int ans=val[p];del(x);
return ans;
}
int next(int x){
insert(x);
int p=chi[root][1];
while(chi[p][0])p=chi[p][0];
int ans=val[p];del(x);
return ans;
}
}Fifi;
int n;
signed main(){
scanf("%d",&n);
for(int i=1;i<=n;i++){
int op,x;
scanf("%d%d",&op,&x);
if(op==1)Fifi.insert(x);
if(op==2)Fifi.del(x);
if(op==3)printf("%d\n",Fifi.rank(x));
if(op==4)printf("%d\n",Fifi.kth(x));
if(op==5)printf("%d\n",Fifi.prev(x));
if(op==6)printf("%d\n",Fifi.next(x));
}
return 0;
}