#include<bits/stdc++.h>
using namespace std;
#define int long long
#define vi vector<int>
#define mkp make_pair
#define pb push_back
#define rep(x,y,z) for(int x=(y);x<=(z);x++)
#define alpha (0.75)
int tot,root,val[100005],cnt[100005],ls[100005],rs[100005],s1[100005],sre[100005],sde[100005];
vi dot;
inline void pushup(int x){
s1[x]=s1[ls[x]]+s1[rs[x]]+1;
sre[x]=sre[ls[x]]+sre[rs[x]]+cnt[x];
sde[x]=sde[ls[x]]+sde[rs[x]]+!!cnt[x];
}
inline bool mustremake(int x){
return (cnt[x]&&(alpha*s1[x]<=1.0*max(s1[ls[x]],s1[rs[x]])))||(1.0*sde[x]<=alpha*s1[x]);
}
void flat(int x){
if(!x) return;
flat(ls[x]);
if(cnt[x]) dot.pb(x);
flat(rs[x]);
}
int build(int l,int r){
int mid=(l+r)>>1;
if(l>=r) return 0;
ls[dot[mid]]=build(l,mid);
rs[dot[mid]]=build(mid+1,r);
pushup(dot[mid]);
return dot[mid];
}
void remake(int &k){
dot.clear();
flat(k);
k=build(0,dot.size());
}
void insert(int &p,int x){
if(!p){
p=++tot;
if(!root) root=1;
val[p]=x;
ls[p]=rs[p]=0;
cnt[p]=s1[p]=sre[p]=sde[p]=1;
}else{
if(val[p]==x) cnt[p]++;
else if(val[p]<x) insert(rs[p],x);
else insert(ls[p],x);
pushup(p);
if(mustremake(p)) remake(p);
}
}
void erase(int &p,int x){
if(!p) return;
if(val[p]==x){
if(cnt[p]) cnt[p]--;
}else{
if(val[p]<x) erase(rs[p],x);
else erase(ls[p],x);
}
pushup(p);
if(mustremake(p)) remake(p);
}
int upper(int p,int x){
if(!p) return 1;
if(val[p]==x&&cnt[p]) return s1[ls[p]]+1+cnt[p];
if(val[p]>x) return upper(ls[p],x);
return s1[ls[p]]+cnt[p]+upper(rs[p],x);
}
int lower(int p,int x){
if(!p) return 0;
if(val[p]==x&&cnt[p]) return s1[ls[p]];
if(val[p]<x) return s1[ls[p]]+cnt[p]+lower(rs[p],x);
return lower(ls[p],x);
}
int askval(int p,int x){
if(!p) return 0;
if(s1[ls[p]]<x&&x<=s1[ls[p]]+cnt[p]) return val[p];
if(s1[ls[p]]+cnt[p]<x) return askval(rs[p],x-s1[ls[p]]-cnt[p]);
return askval(ls[p],x);
}
int n,q,op,x;
main(){
ios::sync_with_stdio(0),cin.tie(nullptr);
cin>>q;
rep(i,1,q){
cin>>op>>x;
switch(op){
case 1:{
insert(root,x);
break;
}
case 2:{
erase(root,x);
break;
}
case 3:{
cout<<lower(root,x)+1<<"\n";
break;
}
case 4:{
cout<<askval(root,x)<<"\n";
break;
}
case 5:{
cout<<askval(root,lower(root,x))<<"\n";
break;
}
case 6:{
cout<<askval(root,upper(root,x))<<"\n";
break;
}
}
}
}