#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int N =1e5+7;
int n,root,tot;
struct T{
int l,r,size,val,key,cnt;
}t[N*2];
mt19937 rg(521);
int newnode(int val){
t[++tot]={0,0,1,val,(int)rg(),1};
if(root==0){
root=1;
}
return tot;
}
void print(int p){
if(!p){
return ;
}
print(t[p].l);
cout<<t[p].val<<" ";
print(t[p].r);
}
void pushup(int p){
t[p].size=t[t[p].l].size+t[t[p].r].size+t[p].cnt;
}
void split_rank(int rt,int rank,int &x,int &y){
if(!rt){
x=0,y=0;
return ;
}
int &l=t[rt].l,&r=t[rt].r;
if(t[l].size<rank){
x=rt;
split_rank(r,max(0,rank-t[l].size-t[rt].cnt),r,y);
pushup(rt);
}else{
y=rt;
split_rank(l,rank,x,l);
pushup(rt);
}
}
int merge(int x,int y){
if(!x||!y){
return x+y;
}
if(t[x].key<=t[y].key){
t[x].r=merge(t[x].r,y);
pushup(x);
return x;
}else{
t[y].l=merge(x,t[y].l);
pushup(y);
return y;
}
}
void split(int rt,int val,int &x,int &y){
if(!rt){
x=0,y=0;
return ;
}
int &l=t[rt].l,&r=t[rt].r;
if(t[rt].val<=val){
x=rt;
split(r,val,r,y);
}else{
y=rt;
split(l,val,x,l);
}
pushup(rt);
}
void insert(int k){
int x=0,y=0,z=0,x2=0;
split(root,k,x,y);
split(x,k-1,x2,z);
if(t[z].cnt==0){
z=newnode(k);
}else{
t[z].cnt++;
}
root=merge(merge(x2,z),y);
}
void del(int k){
int x=0,y=0,z=0,x2=0;
split(root,k,x,y);
split(x,k-1,x2,z);
if(t[z].cnt==1){
t[z].cnt=0;
root=merge(x2,y);
return ;
}else{
t[z].cnt--;
}
root=merge(merge(x2,z),y);
}
int rk(int k){
int x=0,y=0,z=0,x2=0;
split(root,k,x,y);
split(x,k-1,x2,z);
int ans=t[x2].size+1;
root=merge(merge(x2,z),y);
return ans;
}
int maxx(int rt){
if(t[t[rt].r].cnt!=0){
return maxx(t[rt].r);
}
return t[rt].val;
}
int kth(int k){
int x=0,y=0,z=0,x2=0;
split_rank(root,k,x,y);
int ans=maxx(x);
root=merge(x,y);
return ans;
}
int nextt(int k){
int x=0,y=0,z=0,x2=0;
split(root,k,x,y);
split_rank(y,1,x2,z);
int ans=t[x2].val;
root=merge(merge(x,x2),z);
return ans;
}
int pre(int k){
int x=0,y=0,z=0,x2=0;
split(root,k-1,x,y);
int ans=maxx(x);
root=merge(x,y);
return ans;
}
int main(){
freopen("love.you","r",stdin);
freopen("ac.ans","w",stdout);
scanf("%d",&n);
int x,y;
int cnt=0;
for(int i=1;i<=n;++i){
cnt++;
scanf("%d%d",&x,&y);
if(x==1){
insert(y);
}else if(x==2){
del(y);
}else if(x==3){
printf("%d\n",rk(y));
}else if(x==4){
printf("%d\n",kth(y));
}else if(x==5){
printf("%d\n",pre(y));
}else{
printf("%d\n",nextt(y));
}
}
return 0;
}