#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int N=1e5;
int n;
int opt,x;
struct Splay{
int son[2];
int father;
int val;
int cnt;
int size;
void init(int fa,int v){
val=v;
father=fa;
cnt=size=1;
return ;
}
}splay[N+5];
int root;
int tot;
void push_up(int x){
splay[x].size=splay[splay[x].son[0]].size+splay[splay[x].son[1]].size+splay[x].cnt;
return ;
}
void turn(int x){
int father=splay[x].father;
int grandfather=splay[father].father;
int dir=(splay[father].son[1]==x);
splay[father].son[dir]=splay[x].son[dir^1];
splay[splay[x].son[dir^1]].father=father;
splay[splay[x].son[dir^1]].father;
splay[grandfather].son[splay[grandfather].son[1]==father]=x;
splay[x].father=grandfather;
push_up(x),push_up(father);
return ;
}
void Splay(int x,int k){
while(splay[x].father!=k){
int father=splay[x].father;
int grandfather=splay[father].father;
if(grandfather!=k)
((splay[father].son[0]==x)^(splay[father].son[0]==father))?turn(x):turn(father);
turn(x);
}
if(!k)
root=x;
return ;
}
void find_splay(int x){
int k=root;
while(splay[k].son[x>splay[k].val]&&x!=splay[k].val)
k=splay[k].son[x>splay[k].val];
Splay(k,0);
return ;
}
int get_pre(int x){
find_splay(x);
int k=root;
if(splay[k].val<x)
return k;
k=splay[k].son[0];
while(splay[k].son[1])
k=splay[k].son[1];
return k;
}
int get_suc(int x){
find_splay(x);
int k=root;
if(splay[k].val>x)
return k;
k=splay[k].son[1];
while(splay[k].son[0])
k=splay[k].son[0];
return k;
}
int grank(int x){
find_splay(x);
return splay[splay[x].son[0]].size;
}
int rerank(int x){
int k=root;
while(1){
int ls=splay[k].son[0];
if(splay[ls].size+splay[k].cnt<x){
x-=splay[ls].size+splay[k].cnt;
k=splay[ls].son[1];
}
else if(splay[ls].size>=x)
k=splay[k].son[0];
else
break;
}
Splay(k,0);
return splay[k].val;
}
void insert(int x){
int k=root;
int last_k=0;
while(k&&splay[k].val!=x)
last_k=k,k=splay[k].son[x>splay[k].val];
if(k)
++splay[k].cnt;
else{
k=++tot;
splay[last_k].son[x>splay[last_k].val]=k;
splay[k].init(last_k,x);
}
Splay(k,0);
return ;
}
void del(int x){
int pre=get_pre(x);
int suc=get_suc(x);
Splay(pre,0);
Splay(suc,pre);
int del=splay[suc].son[0];
if(splay[del].cnt>1)
splay[del].cnt--,Splay(del,0);
else
splay[del].cnt=0,splay[suc].son[0]=0,Splay(suc,0);
return ;
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0),cout.tie(0);
insert(-2e9),insert(2e9);
cin>>n;
while(n--){
cin>>opt>>x;
if(opt==1)
insert(x);
else if(opt==2)
del(x);
else if(opt==3)
cout<<grank(x)<<"\n";
else if(opt==4)
cout<<rerank(x+1)<<"\n";
else if(opt==5)
cout<<splay[get_pre(x)].val<<"\n";
else
cout<<splay[get_suc(x)].val<<"\n";
}
return 0;
}