#include<bits/stdc++.h>
using namespace std;
struct Node *nil;
struct Node
{
Node *son[2];
int val,size;
void maintain()
{
size=son[0]->size+son[1]->size+1;
}
Node(int val) : val(val), size(1) { son[0] = son[1] = nil; }
}*root;
int bigrand()
{
return rand()*RAND_MAX+rand();
}
void init()
{
srand((unsigned)time(0));
nil=(Node*)malloc(sizeof(Node));
nil->son[0]=nil->son[1]=nil;
root=nil;
nil->size=0;
}
void split(Node *now,int val,Node * &l,Node *&r)
{
if(now==nil){l=r=nil;return ;}
if(now->val < val)
{
l=now;
split(now->son[1],val,l->son[1],r);
l->maintain();
}
else
{
r=now;
split(now->son[0],val,l,r->son[0]);
r->maintain();
}
}
Node *merge(Node *a,Node *b)
{
if(a==nil) return b;
if(b==nil) return a;
if(bigrand()%(a->size+b->size)<a->size)
{
a->son[1]=merge(a->son[1],b);
a->maintain();
return a;
}
else
{
b->son[0]=merge(a,b->son[0]);
b->maintain();
return b;
}
}
void insert(Node * &root,int val)
{
Node *l,*r;
split(root,val,l,r);
root=merge(merge(l,new Node(val)),r);
}
void remove(Node *&root,int val)
{
Node *l,*r,*mid;
split(root,val,l,r);
split(r,val+1,mid,r);
root=merge(merge(l,merge(mid->son[0],mid->son[1])),r);
}
int getrank(Node *now,int val)
{
if(now->val==val) return now->son[0]->size+1;
if(val< now->val) return getrank(now->son[0],val);
return getrank(now->son[1],val)+now->son[0]->size+1;
}
int getval(Node* now, int k)
{
if (k<=now->son[0]->size)
return getval(now->son[0],k);
else if(k<=now->son[0]->size+1) return now->val;
else return getval(now->son[1],k-now->son[0]->size-1);
}
int getpre(Node *now, int val)
{
if (now == nil) return -INT_MAX;
if (now->val >= val) return getpre(now->son[0], val);
return max(now->val, getpre(now->son[1], val));
}
int getnext(Node *now, int val) {
if (now==nil) return INT_MAX;
if (now->val <= val) return getnext(now->son[1], val);
return min(now->val, getnext(now->son[0], val));
}
int main()
{
init();
int n;
scanf("%d",&n);
while(n--)
{
int num,opt;
scanf("%d%d",&opt,&num);
if(opt==1) insert(root,num);
if(opt==2) remove(root,num);
if(opt==3) printf("%d\n",getrank(root,num));
if(opt==4) printf("%d\n",getval(root,num));
if(opt==5) printf("%d\n",getpre(root,num));
if(opt==6) printf("%d\n",getnext(root,num));
}
}