#include<bits/stdc++.h>
using namespace std;
const int INF=0x3f3f3f3f;
int n,root,cnt;
struct node{
int l,r,size,same,v,imp;
}t[100005];
inline void zig(int &id){
int ls=t[id].l;
t[id].l=t[ls].r;
t[ls].r=id;
t[ls].size=t[id].size;
t[id].size=t[t[id].l].size+t[t[id].r].size+t[id].same;
id=ls;
}
inline void zag(int &id){
int rs=t[id].r;
t[id].r=t[rs].l;
t[rs].l=id;
t[rs].size=t[id].size;
t[id].size=t[t[id].l].size+t[t[id].r].size+t[id].same;
id=rs;
}
inline void insert(int &id,int x){
if(!id){
cnt++;
id=cnt;
t[id].v=x;
t[id].imp=rand();
t[id].size=t[id].same=1;
return ;
}
t[id].size++;
if(x==t[id].v)t[id].same++;
else if(x>t[id].v){
insert(t[id].r,x);
if(t[t[id].r].imp<t[id].imp)zag(id);
}
else {
insert(t[id].l,x);
if(t[t[id].l].imp<t[id].imp)zig(id);
}
}
inline void del(int &id,int x){
if(t[id].v==x){
if(t[id].same>1)t[id].same--;
else if(!t[id].l||!t[id].r)id=t[id].l+t[id].r;
else if(t[t[id].l].imp<t[t[id].r].imp)zig(id),del(id,x);
else zag(id),del(id,x);
return ;
}
t[id].size--;
if(x>t[id].v)del(t[id].r,x);
else del(t[id].l,x);
}
inline int lvl(int &id,int x){
if(x==t[id].v)return t[t[id].l].size+1;
if(x>t[id].v)return t[t[id].l].size+lvl(t[id].r,x)+t[id].same;
else return lvl(t[id].l,x);
}
inline int flvl(int &id,int x){
// cout<<id<<" "<<t[id].v<<" "<<t[t[id].l].size<<" "<<t[id].same<<endl;
if(t[t[id].l].size<x&&x<=t[t[id].l].size+t[id].same)return t[id].v;
if(x>t[t[id].l].size)return flvl(t[id].r,x-t[t[id].l].size-t[id].same);
return flvl(t[id].l,x);
}
inline int fpre(int x){
int id=root,mx=-INF;
while(id){
if(x>t[id].v)mx=t[id].v,id=t[id].r;
else id=t[id].l;
}
return mx;
}
inline int fkth(int x){
int id=root,mn=INF;
while(id){
if(x<t[id].v)mn=t[id].v,id=t[id].l;
else id=t[id].r;
}
return mn;
}
inline void qread(int &x){
x=0;
register int ch=getchar(),flag=0;
while(ch<'0'||ch>'9'){
if(ch=='-')flag=1;
ch =getchar();
}
while(ch>='0'&&ch<='9'){
x=10*x+ch-48;
ch=getchar();
}
if(flag)x=-x;
}
int main(){
qread(n);
for(int i=1;i<=n;i++){
int c,x;
qread(c);
qread(x);
if(c==1){
insert(root,x);
}
else if(c==2){
del(root,x);
}
else if(c==3){
printf("%d\n",lvl(root,x));
}
else if(c==4){
printf("%d\n",flvl(root,x));
}
else if(c==5){
printf("%d\n",fpre(x)==-INF?0:fpre(x));
}
else{
printf("%d\n",fkth(x)==INF?0:fkth(x));
}
}
return 0;
}
救救孩子吧!