#include<bits/stdc++.h>
using namespace std;
const double A=1.0-sqrt(2.0)/2;
struct node{
int l,r,sz,c;
}t[200001];
int len,rt,sta[100001],tp;
inline int insert(int l,int r){
int now=tp?sta[tp--]:++len;
t[now].l=l,t[now].r=r,t[now].c=t[r].c;
t[now].sz=t[l].sz+t[r].sz;
return now;
}
inline void vclean(int x){sta[++tp]=x,t[x].l=t[x].r=t[x].sz=t[x].c=0;}
inline void vcopy(int x,int y){t[y]=t[x];}
inline int vnew(int c){
int now=tp?sta[tp--]:++len;
t[now].c=c,t[now].sz=1;
return now;
}
inline void pushup(int x){
int l=t[x].l,r=t[x].r;
if(!t[l].sz)return;
t[x].c=t[r].c,t[x].sz=t[l].sz+t[r].sz;
}
inline void rotate(int x,bool p){
if(p){
int l=t[x].l;
t[x].r=insert(t[l].r,t[x].r);
t[x].l=t[l].l,vclean(l);
}else{
int r=t[x].r;
t[x].l=insert(t[x].l,t[r].l);
t[x].r=t[r].r,vclean(r);
}
}
inline bool ck(int x){return (double)min(t[t[x].l].sz,t[t[x].r].sz)>=A*(double)t[x].sz;}
inline void maintain(int x){
if(ck(x))return;
rotate(x,t[t[x].l].sz>t[t[x].r].sz);
}
inline void add(int now,int x){
if(t[now].sz==1){
t[now].l=vnew(min(t[now].c,x));
t[now].r=vnew(max(t[now].c,x));
pushup(now);return;
}
maintain(now);
int l=t[now].l,r=t[now].r;
if(x<=t[l].c)add(l,x);
else add(r,x);
pushup(now);
}
inline void del(int now,int fa,int x){
if(t[now].sz==1){
int x=(t[fa].l==now)?t[fa].r:t[fa].l;
fa=x,vclean(now),vclean(x);
return;
}
maintain(now);
int l=t[now].l,r=t[now].r;
if(x<=t[l].c)del(l,now,x);
else del(r,now,x);
pushup(now);
}
inline int findrk(int now,int x){
if(t[now].sz==1)return 1;
maintain(now);
int l=t[now].l,r=t[now].r;
if(x<=t[l].c)return findrk(l,x);
else return t[l].sz+findrk(r,x);
}
inline int findshuz(int now,int k){
if(t[now].sz==k)return t[now].c;
maintain(now);
int l=t[now].l,r=t[now].r;
if(k<=t[l].sz)return findshuz(l,k);
else return findshuz(r,k-t[l].sz);
}
int n;
int main(){
ios::sync_with_stdio(0);
cin.tie(0),cout.tie(0);
cin>>n,rt=vnew(1<<30);
while(n--){
int op,x;
cin>>op>>x;
if(op==1)add(rt,x);
if(op==2)del(rt,0,x);
if(op==3)cout<<findrk(rt,x)<<'\n';
if(op==4)cout<<findshuz(rt,x)<<'\n';
if(op==5)cout<<findshuz(rt,findrk(rt,x)-1)<<'\n';
if(op==6)cout<<findshuz(rt,findrk(rt,x+1))<<'\n';
}
}
TLE+MLE最后只剩30pts