#include<bits/stdc++.h>
using namespace std;
const int N=1e5+5;
const double alpha=0.5;
struct node{
int ls,rs;
int size,real;
int val,del;
}t[N];
int n,x,op;
int order[N],cnt;
int t_stack[N],top;
int root;
void inorder(int u){
if(!u) return;
inorder(t[u].ls);
if(t[u].del) order[++cnt]=u;
else t_stack[++top]=u;
inorder(t[u].rs);
}
void resetnode(int u){
t[u].ls=t[u].rs=0;
t[u].size=t[u].real=t[u].del=1;
}
void push_up(int u){
t[u].size=t[t[u].ls].size+t[t[u].rs].size+1;
t[u].real=t[t[u].ls].real+t[t[u].rs].real+1;
}
void build(int l,int r,int &u){
int mid=(l+r)>>1;
u=order[mid];
if(l==r){
resetnode(u);
return;
}
if(l<mid) build(l,mid-1,t[u].ls);
if(l==mid) t[u].ls=0;
build(mid+1,r,t[u].rs);
push_up(u);
}
void rebuild(int &u){
cnt=0;
inorder(u);
if(cnt) build(1,cnt,u);
else u=0;
}
bool balance(int u){
return (double)t[u].real*alpha<=(double)max(t[t[u].ls].real,t[t[u].rs].real);
}
void add(int &u,int x){
if(!u){
u=t_stack[top--];
t[u].val=x;
resetnode(u);
return;
}
t[u].size++;
t[u].real++;
if(t[u].val>=x) add(t[u].ls,x);
else add(t[u].rs,x);
if(!balance(u)) rebuild(u);
}
int ranks(int u,int x){
if(!u) return 0;
if(x>t[u].val) return t[t[u].ls].real+t[u].del+ranks(t[u].rs,x);
return ranks(t[u].ls,x);
}
int kth(int k){
int u=root;
while(u){
if(t[u].del&&t[t[u].ls].real+1==k) return t[u].val;
else if(t[t[u].ls].real>=k) u=t[u].ls;
else{
k=k-t[t[u].ls].real-t[u].del;
u=t[u].rs;
}
}
return t[u].val;
}
void del_k(int &u,int k){
t[u].real--;
if(t[u].del&&t[t[u].ls].real+1==k){
t[u].del=0;
return;
}
if(t[t[u].ls].real+t[u].del>=k) del_k(t[u].ls,k);
else del_k(t[u].rs,k-t[t[u].ls].real-t[u].del);
}
void t_del(int x){
del_k(root,ranks(root,x)+1);
if(t[root].size*alpha>=t[root].real) rebuild(root);
}
void init(){
for(int i=N-1;i>=1;i--){
t_stack[++top]=i;
}
}
int main(){
init();
cin>>n;
while(n--){
cin>>op>>x;
switch(op){
case 1:add(root,x);break;
case 2:t_del(x);break;
case 3:cout<<ranks(root,x)+1<<endl;break;
case 4:cout<<kth(x)<<endl;break;
case 5:cout<<kth(ranks(root,x))<<endl;break;
case 6:cout<<kth(ranks(root,x+1)+1)<<endl;break;
default:break;
}
}
return 0;
}