#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int n,opt,root,ans,xx,size;
struct treep{int lc,rc,key,pri,cnt,sze;}t[100005];
void update(int k){t[k].sze=t[t[k].lc].sze+t[t[k].rc].sze+t[k].cnt;}
void yx(int &k){
 int tt=t[k].lc; t[k].lc=t[k].rc;t[tt].rc=k;t[tt].sze=t[k].sze; update(k); k=tt;}
void zx(int &k){
 int tt=t[k].rc; t[k].rc=t[k].lc;t[tt].lc=k;t[tt].sze=t[k].sze; update(k); k=tt;}
void cr(int &k,int x){
    if(k==0){size++; k=size;t[k].sze=t[k].cnt=1; t[k].key=x; t[k].pri=rand(); return;}
    t[k].sze++;
    if(t[k].key==x) t[k].cnt++;
    else if(x>t[k].key){
        cr(t[k].rc,x);
        if(t[t[k].rc].pri<t[k].pri) zx(k);
    }else {
        cr(t[k].lc,x);
        if(t[t[k].lc].pri<t[k].pri) yx(k);
    }
}
void sc(int &k,int x){
    if(k==0) return ;
    if(t[k].key==x){
        if(t[k].cnt>1){t[k].cnt--;t[k].sze--;return;}
        if(t[k].rc*t[k].lc==0) k=t[k].lc+t[k].rc;
        else if(t[t[k].lc].pri<t[t[k].rc].pri){yx(k);sc(k,x);}
        else {zx(k);sc(k,x);}
    }
    else if(x>t[k].key){t[k].sze--;sc(t[k].rc,x);}
    else {t[k].sze--;sc(t[k].lc,x);}
}
int pm(int k,int x ){
    if(k==0) return 0;
    if(t[k].key==x) return t[t[k].lc].sze+1;
    else if(x>t[k].key) return t[t[k].lc].sze+t[k].cnt+pm(t[k].rc,x);
    else return pm(t[k].lc,x);
}
int dj(int k,int x){
    if(k==0) return 0;
    if(x<=t[t[k].lc].sze) return dj(t[k].lc,x);
    else if(x>t[t[k].lc].sze+t[k].cnt) return dj(t[k].rc,x-t[t[k].lc].sze-t[k].cnt);
    else return t[k].key;
}
void qq(int k,int x){
    if(k==0) return ;
    if(t[k].key<x){ans=k;qq(t[k].rc,x);}
    else qq(t[k].lc,x);
}
void hq(int k,int x){
    if(k==0) return ;
    if(t[k].key>x){ans=k;hq(t[k].lc,x);}
    else hq(t[k].rc,x);
}
int main(){
//	freopen("in.txt","r",stdin);
    scanf("%d",&n);
    for(int i=1;i<=n;i++){
        scanf("%d%d",&opt,&xx); 
        if(opt==1) cr(root,xx);
        if(opt==2) sc(root,xx);
        if(opt==3) printf("%d\n",pm(root,xx));
        if(opt==4) printf("%d\n",dj(root,xx));
        if(opt==5) {ans=0;qq(root,xx);printf("%d\n",t[ans].key);}
        if(opt==6) {ans=0;hq(root,xx);printf("%d\n",t[ans].key);}
    }
    return 0;
}