RT
#include<bits/stdc++.h>
using namespace std;
int n,total,root;
struct Treap {
int son[2],val,size,cnt,dat;
} t[2000005];
void push_up(int p) {
t[p].size=t[t[p].son[0]].size+t[t[p].son[1]].size+t[p].cnt;
}
int newnode(int val) {
t[++total].val=val;
t[total].dat=rand();
t[total].cnt=t[total].size=1;
return total;
}
void build() {
root=newnode(-(1<<30));
t[root].son[1]=newnode(1<<30);
}
void spin(int &p,int opt) {
int temp=t[p].son[opt^1];
t[p].son[opt^1]=t[temp].son[opt];
t[temp].son[opt]=p;
p=temp;
push_up(t[p].son[opt]);
push_up(p);
}
void insert(int &p,int val) {
if(!p) {
p=newnode(val);
return;
}
if(t[p].val==val)t[p].cnt++;
else {
if(t[p].val>val) {
insert(t[p].son[0],val);
if(t[p].dat<t[t[p].son[0]].dat)spin(p,1);
} else {
insert(t[p].son[1],val);
if(t[p].dat<t[t[p].son[1]].dat)spin(p,0);
}
}
push_up(p);
}
void det(int &p,int val) {
if(!p)return;
if(t[p].val==val) {
if(t[p].cnt>1)t[p].cnt--,push_up(p);
else {
if(t[p].son[0]||t[p].son[1]) {
if(!t[p].son[1]||t[t[p].son[0]].dat>t[t[p].son[1]].dat)
spin(p,1),det(t[p].son[1],val);
else spin(p,0),det(t[p].son[0],val);
push_up(p);
} else p=0;
}
}
if(val<t[p].val)det(t[p].son[0],val);
else det(t[p].son[1],val);
push_up(p);
}
int pre(int val) {
int p=root,res;
while(p) {
if(t[p].val<val)res=t[p].val,p=t[p].son[1];
else p=t[p].son[0];
}
return res;
}
int nxt(int val) {
int p=root,res;
while(p) {
if(t[p].val>val)res=t[p].val,p=t[p].son[0];
else p=t[p].son[1];
}
return res;
}
int rank(int p,int val) {
if(!p)return 1<<30;
if(t[p].val==val)return t[t[p].son[0]].size+1;
else if(t[p].val<val)rank(t[p].son[0],val);
else return t[t[p].son[0]].size+t[p].cnt+rank(t[p].son[1],val);
}
int val(int p,int rank) {
if(!p)return 1<<30;
if(rank<=t[t[p].son[0]].size)return val(t[p].son[0],rank);
else if(rank<=t[t[p].son[0]].size+t[p].cnt)return t[p].val;
else return val(t[p].son[1],rank-t[t[p].son[0]].size-t[p].cnt);
}
int main() {
scanf("%d",&n);
int opt,x;
//build();
while(n--) {
scanf("%d%d",&opt,&x);
if(opt==1)insert(root,x);
if(opt==2)det(root,x);
if(opt==3)printf("%d\n",rank(root,x));
if(opt==4)printf("%d\n",val(root,x));
if(opt==5)printf("%d\n",pre(x));
if(opt==6)printf("%d\n",nxt(x));
}
}