#include<bits/stdc++.h>
using namespace std;
const int n_sz=100010;
double alpha=0.75;
int n,cnt,rt,w[n_sz],l[n_sz],r[n_sz],num[n_sz],s[n_sz],sz[n_sz],sd[n_sz],reca[n_sz];
void pushup(int k)
{
s[k]=s[l[k]]+s[r[k]]+1;
sz[k]=sz[l[k]]+sz[r[k]]+num[k];
sd[k]=sd[l[k]]+sd[r[k]]+(num[k]!=0);
}
bool needRec(int k)
{
return num[k]&&(alpha*s[k]<=(double)max(s[l[k]],s[r[k]])||(double)sd[k]<=alpha*s[k]);
}
void Rec_dfs_mid(int& tot,int k)
{
if(!k)return ;
Rec_dfs_mid(tot,l[k]);
if(num[k])reca[tot++]=k;
Rec_dfs_mid(tot,r[k]);
}
int Rec_dfs_bld(int lr,int rr)
{
int mid=(lr+rr)>>1;
if(lr>=rr)return 0;
l[reca[mid]]=Rec_dfs_bld(lr,mid);
r[reca[mid]]=Rec_dfs_bld(mid+1,rr);
pushup(mid);
return reca[mid];
}
void Rec(int& k)
{
int tot=0;
Rec_dfs_mid(tot,k);
k=Rec_dfs_bld(0,tot);
}
void insert(int& k,int p)
{
if(!k)
{
k=++cnt;
if(!rt)rt=1;
w[k]=p;
l[k]=r[k]=0;
num[k]=s[k]=sz[k]=sd[k]=1;
}
else
{
if(w[k]==p)
{
num[k]++;
}
else if(w[k]<p)
{
insert(r[k],p);
}
else
{
insert(l[k],p);
}
pushup(k);
if(needRec(k))Rec(k);
}
}
void dlt(int& k,int p)
{
if(!k)
{
return ;
}
else
{
if(w[k]==p)
{
num[k]--;
}
else if(w[k]<p)
{
insert(r[k],p);
}
else
{
insert(l[k],p);
}
pushup(k);
if(needRec(k))Rec(k);
}
}
int fprrk(int k,int p)
{
pushup(k);
if(!k)return 0;
else if(w[k]==p&&num[k])
return sz[l[k]];
else if(w[k]<p)
return sz[l[k]]+num[k]+fprrk(r[k],p);
else
return fprrk(l[k],p);
}
int fnwrk(int k,int p)
{
pushup(k);
if(!k)return 0;
else if(w[k]==p&&num[k])
return sz[l[k]]+1;
else if(w[k]<p)
return sz[l[k]]+num[k]+fnwrk(r[k],p);
else
return fnwrk(l[k],p);
}
int fntrk(int k,int p)
{
pushup(k);
if(!k)return 1;
else if(w[k]==p&&num[k])
return sz[l[k]]+1+num[k];
else if(p<w[k])
return fntrk(l[k],p);
else
return sz[l[k]]+num[k]+fntrk(r[k],p);
}
int qv_by_rk(int k,int p)
{
pushup(k);
if(!k)return 0;
else if(sz[l[k]]<p&&p<=sz[l[k]]+num[k])
return w[k];
else if(sz[l[k]]+num[k]<p)
return qv_by_rk(r[k],p-sz[l[k]]-num[k]);
else
return qv_by_rk(l[k],p);
}
int fpv(int k,int p)
{
return qv_by_rk(k,fprrk(k,p));
}
int fnv(int k,int p)
{
return qv_by_rk(k,fntrk(k,p));
}
main(){
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
cin>>n;
for(int i=1;i<=n;i++)
{
int op,k;
cin>>op>>k;
if(op==1)insert(rt,k);
else if(op==2)dlt(rt,k);
else if(op==3){insert(rt,k);cout<<fnwrk(rt,k)<<"\n";dlt(rt,k);}
else if(op==4)cout<<qv_by_rk(rt,k)<<"\n";
else if(op==5)cout<<fpv(rt,k)<<"\n";
else if(op==6)cout<<fnv(rt,k)<<"\n";
}
}