#include<bits/stdc++.h>
#define int long long
#define ls son[k][0]
#define rs son[k][1]
using namespace std;
int n;
int val[500005],siz[500005],fa[500005],son[500005][2],cnt,rt;
inline bool check(int k){
return son[fa[k]][1]==k;
}
inline void pushup(int k){
siz[k]=siz[ls]+siz[rs]+1;return;
}
inline void clear(int k){
siz[k]=ls=rs=fa[k]=val[k]=0;return;
}
inline void rotate(int x){//将x向上旋转
int y=fa[x];
son[fa[y]][check(y)]=x;
if(!check(x)){//x为y的ls
son[y][0]=son[x][1],son[x][1]=y;
fa[x]=fa[y],fa[y]=x,fa[son[y][0]]=y;
pushup(y),pushup(x);
}else{ //x为y的rs
son[y][1]=son[x][0],son[x][0]=y;
fa[x]=fa[y],fa[y]=x,fa[son[y][1]]=y;
pushup(y),pushup(x);
}return;
}
inline void splay(int x,int top){
while(fa[x]!=top){
int y=fa[x];
if(fa[y]!=top){
if(check(x)==check(y)){
rotate(y);
}else rotate(x);
}rotate(x);
}if(!top)rt=x;return;
}
inline void insert(int P,int &k,int last){
if(!k){
k=++cnt,siz[k]=1;
val[k]=P,fa[k]=last;
splay(k,0);
}else{
insert(P,son[k][P>val[k]],k);
}return;
}
inline void find(int P,int k){
if(!k)return;
if(P==val[k]){
splay(k,0);
}else{
if(!son[k][P>val[k]])splay(k,0);
else find(P,son[k][P>val[k]]);
}return;
}
inline int pre(int P){
find(P,rt);int x=rt;
if(val[x]<P)return x;
x=son[x][0];
while(son[x][1])x=son[x][1];
return x;
}
inline int nxt(int P){
find(P,rt);int x=rt;
if(val[x]>P)return x;
x=son[x][1];
while(son[x][0])x=son[x][0];
return x;
}
inline void delet(int P){
int pr=pre(P),nx=nxt(P);
splay(pr,0),splay(nx,pr);
son[nx][0]=0,pushup(nx);
splay(nx,0);return;
}
inline int query_rank(int P,int k){
if(!k)return 0;
if(val[k]<=P){
return siz[ls]+1+query_rank(P,rs);
}else{
return query_rank(P,ls);
}
}
inline int query_val(int rank,int k){
if(siz[ls]+1==rank){
return k;
}if(siz[ls]+1>rank){
return query_val(rank,ls);
}else{
return query_val(rank-siz[ls]-1,rs);
}
}
inline int read(){
register int x(0),t(0);
static char ch=getchar();
while(!isdigit(ch)){t|=(ch=='-');ch=getchar();}
while(isdigit(ch)){x=(x<<1)+(x<<3)+(ch^48);ch=getchar();}
return t?-x:x;
}
signed main(){
n=read(),insert(2e18,rt,0),insert(-2e18,rt,0);
while(n--){
int opt=read(),x=read();
if(opt==1)insert(x,rt,0);
else if(opt==2)delet(x);
else if(opt==3){
find(x-1,rt);
cout<<query_rank(x-1,rt)<<'\n';
}else if(opt==4){
int res=query_val(x+1,rt);
splay(res,0),cout<<val[res]<<'\n';
}else if(opt==5){
int res=pre(x);
splay(res,0),cout<<val[res]<<'\n';
}else if(opt==6){
int res=nxt(x);
splay(res,0),cout<<val[res]<<'\n';
}
}
return 0;
}