#include<bits/stdc++.h>
using namespace std;
struct findt{
int root=1;
int ottoma=0;
struct point{
int count;
int num;
int fa;
int le;
int ri;
int otto;
int sizel;
int sizer;
};
point p[1145104];
int creat(int num){
int id=p[root].sizel+p[root].sizer+(p[root].count&&1)+ottoma+1;
p[id].count=1;
p[id].num=num;
p[id].otto=1;
// cout<<"cout a point on "<<id<<endl;
// out(1);
return id;
}
int insert(int num,int id){
// cout<<"ins "<<id<<endl;
if(!p[id].otto){
return creat(num);
}
if(p[id].num==num){
p[id].count++;
return id;
}
if(p[id].num<num){
p[id].ri=insert(num,p[id].ri);
p[p[id].ri].fa=id;
p[id].sizer++;
return id;
}
if(p[id].num>num){
p[id].le=insert(num,p[id].le);
p[p[id].le].fa=id;
p[id].sizel++;
return id;
}
return id;
}
int search_t(int ser,int id){
// cout<<ser<<" t "<<id<<endl;
if(ser>p[id].sizel&&ser<=p[id].sizel+p[id].count){
return p[id].num;
}
if(ser<=p[id].sizel){
return search_t(ser,p[id].le);
}else{
return search_t(ser-p[id].sizel-p[id].count,p[id].ri);
}
}
int search_v(int ser,int id){
// cout<<ser<<" v "<<id<<endl;
if(ser==p[id].num){
return p[id].sizel+1;
}
if(ser<p[id].num){
return search_v(ser,p[id].le);
}else{
return search_v(ser,p[id].ri)+p[id].sizel+p[id].count;
}
}
int sercot(int ser,int id){
// cout<<ser<<" o "<<id<<endl;
if(ser==p[id].num){
return p[id].count;
}
if(ser<p[id].num){
return sercot(ser,p[id].le);
}else{
return sercot(ser,p[id].ri);
}
}
void del(int ser,int id){
// cout<<ser<<" "<<id<<endl;
if(ser==p[id].num){
p[id].count--;
}
else if(ser<p[id].num){
del(ser,p[id].le);
p[id].sizel--;
}else{
del(ser,p[id].ri);
p[id].sizer--;
}
if(p[id].count==0){
ottoma++;
}
return ;
}
int pon(int num,int id){
insert(num,id);
// out(root);
//cout<<search_v(num,id);
int x= search_t(search_v(num,id)+sercot(num,id),root);
del(num,id);
return x;
}
int ton(int num,int id){
insert(num,id);
int x= search_t(search_v(num,id)-1,root);
del(num,id);
return x;
}
void out(int id){
if(p[id].le)
out(p[id].le);
cout<<" ("<<id<<" "<<p[id].num<<" "<<p[id].count<<" /"<<p[id].le<<" "<<p[id].sizel<<" \\"<<p[id].ri<<" "<<p[id].sizer<<") ";
if(p[id].ri)
out(p[id].ri);
}
void gongchan(int id){
int y=p[id].fa;
int z=p[y].fa;
p[y].ri=p[id].le;
p[id].le=y;
if(z){
if(p[z].le==y){
p[z].le=id;
}else{
p[z].ri=id;
}
}
if(p[y].ri)
p[p[y].ri].fa=y;
p[y].fa=id;
p[id].fa=z;
if(y==root){
root=id;
}
p[id].sizel=p[p[id].le].sizel+p[p[id].le].sizer+p[p[id].le].count;
p[id].sizer=p[p[id].ri].sizel+p[p[id].ri].sizer+p[p[id].ri].count;
p[y].sizel=p[p[y].le].sizel+p[p[y].le].sizer+p[p[y].le].count;
p[y].sizer=p[p[y].ri].sizel+p[p[y].ri].sizer+p[p[y].ri].count;
p[z].sizel=p[p[z].le].sizel+p[p[z].le].sizer+p[p[z].le].count;
p[z].sizer=p[p[z].ri].sizel+p[p[z].ri].sizer+p[p[z].ri].count;
}
void ziben(int id){
int y=p[id].fa;
int z=p[y].fa;
p[y].le=p[id].ri;
p[id].ri=y;
if(z){
if(p[z].le==y){
p[z].le=id;
}else{
p[z].ri=id;
}
}
if(p[y].le)
p[p[y].le].fa=y;
p[y].fa=id;
p[id].fa=z;
if(y==root){
root=id;
}
p[id].sizel=p[p[id].le].sizel+p[p[id].le].sizer+p[p[id].le].count;
p[id].sizer=p[p[id].ri].sizel+p[p[id].ri].sizer+p[p[id].ri].count;
p[y].sizel=p[p[y].le].sizel+p[p[y].le].sizer+p[p[y].le].count;
p[y].sizer=p[p[y].ri].sizel+p[p[y].ri].sizer+p[p[y].ri].count;
p[z].sizel=p[p[z].le].sizel+p[p[z].le].sizer+p[p[z].le].count;
p[z].sizer=p[p[z].ri].sizel+p[p[z].ri].sizer+p[p[z].ri].count;
}
};
findt t;
int main()
{
// freopen("T.in","r",stdin);
// freopen("T.out","w",stdout);
int n;
cin>>n;
for(int i=1;i<=n;i++){
int x,y;
// out(1);
cin>>x>>y;
if(x==1){
t.insert(y,t.root);
}
if(x==2){
t.del(y,t.root);
}
if(x==3){
t.insert(y,t.root);
cout<<t.search_v(y,t.root)<<endl;
t.del(y,t.root);
}if(x==4){
// insert(y,root);
cout<<t.search_t(y,t.root)<<endl;
// del(y,root);
}
if(x==5){
cout<<t.ton(y,t.root)<<endl;
}if(x==6){
cout<<t.pon(y,t.root)<<endl;
}
// cout<<t.root;
// t.out(t.root);
//
}
return 0;
}