#include <iostream>
#include <cstdlib>
using namespace std;
const int INF=90000000;
int son[100005][2],shu[100005],sui[100005],z,dui[100005],size[100005],a,c,ans,ans1,yy;
void build(int xxx)
{
size[xxx]=size[son[xxx][1]]+size[son[xxx][0]]+dui[xxx];
}
void new1(int xx)
{
z++;
shu[z]=xx;
sui[z]=abs(rand());
dui[z]=1;
size[z]=1;
}
void zuoxuan(int &id1)
{
int k=son[id1][1];
int k1=son[k][0];
son[k][0]=id1;
son[id1][1]=k1;
id1=k;
build(son[k][0]);
}
void youxuan(int &id2)
{
int k=son[id2][0];
int k1=son[k][1];
son[k][1]=id2;
son[id2][0]=k1;
id2=k;
build(son[k][1]);
}
void put(int &id,int x)
{
if(!id)
{
new1(x);
id=z;
return;
}
else
{
if(x==shu[id])
{
dui[id]++;
size[id]++;
return ;
}
if(x>shu[id])
{
put(son[id][1],x);
if(sui[id]>sui[son[id][1]])
zuoxuan(id);
}
else
{
put(son[id][0],x);
if(sui[id]>sui[son[id][0]])
youxuan(id);
}
}
build(id);
}
void check(int f,int now)
{
if(now==0)
return;
if(shu[now]>f)
{
check(f,son[now][0]);
}
if(shu[now]<f)
{
ans+=size[son[now][0]]+dui[now];
check(f,son[now][1]);
}
if(shu[now]==f)
{
ans+=size[son[now][0]];
}
}
void remove(int l,int &now)
{
if(son[now][0]==0&&son[now][1]==0)
{
now=0;
return;
}
if(shu[now]>l)
{
remove(l,son[now][0]);
}
if(shu[now]<l)
{
remove(l,son[now][1]);
}
if(shu[now]==l)
{
if(dui[now]>1)
{
dui[now]--;
}
else
{
if(sui[son[now][0]]<sui[son[now][1]])
{
youxuan(now);
remove(l,son[now][1]);
}
else
{
zuoxuan(now);
remove(l,son[now][0]);
}
}
}
build(now);
}
void check1(int s,int now)
{
if(now==0)
return;
if(ans+size[son[now][0]]==s)
{
ans1=shu[now];
return ;
}
if(s<ans+size[son[now][0]])
{
check1(s,son[now][0]);
}
else
{
ans+=size[son[now][0]]+dui[now];
check1(s,son[now][1]);
}
}
int n;
void qian(int x,int now)
{
if(now==0)
return;
if(x>shu[now])
{
ans1=shu[now];
qian(x,son[now][1]);
}
else
{
qian(x,son[now][0]);
}
}
void hou(int x,int now)
{
if(now==0)
return;
if(x<shu[now])
{
ans1=shu[now];
hou(x,son[now][0]);
}
else
{
hou(x,son[now][1]);
}
}
int main()
{
cin>>n;
z++;
shu[z]=INF;
sui[z]=-1;
dui[z]=1;
size[z]=1;
for(int i=1;i<=n;i++)
{
cin>>a>>c;
if(a==1)
put(son[1][0],c);
if(a==2)
remove(c,son[1][0]);
if(a==3)
{
ans=1;
check(c,1);
cout<<ans<<endl;
}
if(a==4)
{
ans=1;
check1(c,1);
cout<<ans1<<endl;
}
if(a==5)
{
qian(c,son[1][0]);
cout<<ans1<<endl;
}
if(a==6)
{
hou(c,son[1][0]);
cout<<ans1<<endl;
}
}
return 0;
}