#include<bits/stdc++.h>
using namespace std;
int n,top=1;
int rd()
{
int f=1,su=0;
char c=getchar();
while(c<'0'&&c>'9')
{
if(c=='-')
{
f=-1;
c=getchar();
}
}
while(c>='0'&&c<='9'&&c!=' ')
{
su=su*10+c-'0';
c=getchar();
}
return su*f;
}
struct treap{
int v,cnt,ch[2],hv;
int ran;
};
treap t[10000033]={{0,0,{0,0},0,0},{2147483647,0,{0,0},0,2147483647}};
int newl(int v)
{
t[++top]=(treap){v,1,{0,0},1,rand()};
return top;
}
void up(int id)
{
t[id].hv=t[t[id].ch[0]].hv+t[t[id].ch[1]].hv+t[id].cnt;
}
void turn(int now,bool c)
{
swap(t[now].v,t[t[now].ch[c]].v);
swap(t[now].cnt,t[t[now].ch[c]].cnt);
swap(t[now].ran,t[t[now].ch[c]].ran);
swap(t[t[now].ch[c]].ch[0],t[t[now].ch[c]].ch[1]);
swap(t[now].ch[0],t[now].ch[1]);
swap(t[now].ch[c],t[t[now].ch[!c]].ch[!c]);
up(t[now].ch[!c]);
up(now);
}
void add(int now,int v)
{
if(t[now].v==v)
{
++t[now].cnt;
up(now);
return;
}
bool c=(t[now].v<v);
if(!t[now].ch[c])
{
t[now].ch[c]=newl(v);
if(t[t[now].ch[c]].ran>t[now].ran) turn(now,c);
up(now);
return;
}
add(t[now].ch[c],v);
if(t[t[now].ch[c]].ran>t[now].ran) turn(now,c);
up(now);
}
void del(int now,int v)
{
if(!now)return;
if(t[now].v==v)
{
t[now].cnt=max(0,t[now].cnt-1);
up(now);
return;
}
bool c=(t[now].v<v);
del(t[now].ch[c],v);
up(now);
}
int szp(int now,int v)
{
if(!now)return 0;
if(t[now].v>=v)
return szp(t[now].ch[0],v);
else
return t[now].hv-t[t[now].ch[1]].hv+szp(t[now].ch[1],v);
}
int pzs(int now,int k)
{
if(!now)return 0;
if(k>t[t[now].ch[0]].hv&&k<=t[now].hv-t[t[now].ch[1]].hv)
return t[now].v;
if(k<=t[t[now].ch[0]].hv)
return pzs(t[now].ch[0],k);
else
return pzs(t[now].ch[1],k-t[now].hv+t[t[now].ch[1]].hv);
}
int last(int now,int k)
{
if(!now)return -2147483647;
if(k>t[now].v)
{
int oz=last(t[now].ch[1],k);
if(t[now].cnt)
return max(oz,t[now].v);
else return max(oz,last(t[now].ch[0],k));
}
else return last(t[now].ch[0],k);
}
int next(int now,int k)
{
if(!now)return 2147483647;
if(k<t[now].v)
{
int oz=next(t[now].ch[0],k);
if(t[now].cnt)
return min(oz,t[now].v);
else return min(oz,next(t[now].ch[1],k));
}
else return next(t[now].ch[1],k);
}
int main()
{
int aa,bb;
n=rd();
for(int i=1;i<=n;i++)
{
aa=rd();
bb=rd();
switch(aa)
{
case 1:{
add(1,bb);
break;
}
case 2:{
del(1,bb);
break;
}
case 3:{
printf("%d\n",szp(1,bb)+1);
break;
}
case 4:{
printf("%d\n",pzs(1,bb));
break;
}
case 5:{
printf("%d\n",last(1,bb));
break;
}
case 6:{
printf("%d\n",next(1,bb));
break;
}
}
}
return 0;
}