#include<bits/stdc++.h>
using namespace std;
const int N=1e5+5;
int n,s[4*N],f[4*N],son[4*N][2];
int t[4*N],si[4*N],rt,cnt;
void push_up(int x)
{
si[x]=s[x]+si[son[x][0]]+si[son[x][1]];
}
void rotate(int x)
{
int fa=f[x],gf=f[fa],k=(son[fa][1]==x);
son[gf][son[gf][1]==fa]=x;
f[x]=gf;
son[fa][k]=son[x][k^1];
f[son[x][k^1]]=fa;
son[x][k^1]=fa;
f[fa]=x;
push_up(fa);
push_up(x);
}
void splay(int x,int flag)
{
while(f[x]!=flag)
{
int fa=f[x],gf=f[fa];
if(gf!=flag)
{
if((son[fa][0]==x)^(son[gf][0]==fa))
{
rotate(x);
}
else
{
rotate(fa);
}
}
rotate(x);
}
if(flag==0)
{
rt=x;
}
}
void insert(int x)
{
int u=rt,fa=0;
while(u&&t[u]!=x)
{
fa=u;
u=son[u][x>t[u]];
}
if(u)
{
s[u]++;
}
else
{
u=++cnt;
son[u][0]=son[u][1]=0;
f[cnt]=fa;
si[cnt]=1;
s[cnt]=1;
if(fa)
{
son[fa][x>t[u]]=u;
}
t[cnt]=x;
}
splay(u,0);
}
void find1(int x)
{
int u=rt;
if(!u)
{
return ;
}
while(son[u][x>t[u]]&&x!=t[u])
{
u=son[u][x>t[u]];
}
splay(u,0);
}
int find2(int x)
{
int u=rt;
if(si[u]<x)
{
return 0;
}
while(1)
{
int y=son[u][0];
if(x>s[u]+si[y])
{
x-=s[u]+si[y];
u=son[u][1];
}
else
{
if(si[y]>=x)
{
u=y;
}
else
{
return t[u];
}
}
}
}
int next(int x,int k)
{
find1(x);
int u=rt;
if((t[u]>x&&k)||(t[u]<x&&!k))
{
return u;
}
u=son[u][k];
while(son[u][k^1])
{
u=son[u][k^1];
}
return u;
}
void Delete(int x)
{
int l=next(x,0),r=next(x,1);
splay(l,0);
splay(r,l);
int y=son[r][0];
if(s[y]>1)
{
s[y]--;
splay(y,0);
}
else
{
son[r][0]=0;
}
}
int main()
{
insert(+2147483647);
insert(-2147483647);
cin>>n;
int tt=0;
for(int i=1;i<=n;i++)
{
int op,x;
cin>>op>>x;
if(op==1)
{
tt=0;
insert(x);
}
else if(op==2)
{
tt=0;
Delete(x);
}
else if(op==3)
{
if(tt==x)
{
cout<<si[son[rt][0]]<<endl;
tt=0;
}
else
{
find1(x);
tt=x;
cout<<si[son[rt][0]]<<endl;
}
}
else if(op==4)
{
tt=0;
cout<<find2(x+1)<<endl;
}
else if(op==5)
{
tt=0;
cout<<t[next(x,0)]<<endl;
}
else
{
tt=0;
cout<<t[next(x,1)]<<endl;
}
}
return 0;
}
rt,只A了2、3两个点,第13点还TLE了