include<bits/stdc++.h>
using namespace std;
int ch[200050][2];
int fa[200050];
int cnt[200050];
int val[200050];
int size[200050];
int ncnt,root;int n,op,x;
bool jud(int o)
{//cout<<"LOL"<<endl;
return ch[fa[o]][1]==o;
}
void push(int o)
{
/////shaole
size[o]=size[ch[o][1]]+size[ch[o][0]]+cnt[o];
}
void rotate(int x)
{
int y=fa[x],z=fa[y],k=jud(x),w=ch[x][k^1];
ch[y][k]=w; fa[w]=y;
ch[z][jud(y)]=x; fa[x]=z;
ch[x][k^1]=y; fa[y]=z;
push(y);push(x);
}
void splay(int o,int goal=0)
{
while(fa[o]!=goal)
{
int y=fa[o],z=fa[y];
if(z!=goal)
{
if(jud(o)==jud(y)) rotate(y);
else rotate(o);
}
rotate(o);
}
if(!goal)
{
root=o;
}
}
void insert(int x)
{
int cur=root,p=0;
while(cur&&val[cur]!=x)
{
p=cur;
cur=ch[cur][x>val[cur]];
}
if(cur)
{
cnt[cur]++;
}
else
{
cur=++ncnt;
if(p)
ch[p][x>val[p]]=cur;
ch[cur][1]=ch[cur][0]=0;
fa[cur]=p;
val[cur]=x;
cnt[cur]=size[cur]=1;
}
splay(cur);
}
void find(int x)
{
int cur=root;
while(ch[cur][x>val[cur]]&&val[cur]!=x)
{
cur=ch[cur][x>val[cur]];
}
splay(cur);
}
int kth(int x)
{
int cur=root;
while(1)
{
if(ch[cur][0]&&x<=size[ch[cur][0]]) cur=ch[cur][0];
else if(x>size[ch[cur][0]]+cnt[cur])
{
x-=size[ch[cur][0]]+cnt[cur];
cur=ch[cur][1];
}
else
{
return cur;
}
}
}
int per(int k)
{
find(k);
if(k>val[root]) return root;
int cur=ch[root][0];
while(ch[cur][1]) cur=ch[cur][1];
return cur;
}
int aft(int k)
{
find(k);
if(k<val[root]) return root;
int cur=ch[root][1];
while(ch[cur][0]) cur=ch[cur][0];
return cur;
}
void remove(int x)
{
int latu=per(x);
int next=aft(x);
splay(latu);
splay(next,latu);
int del = ch[next][0];
if (cnt[del] > 1) {
cnt[del]--;
splay(del);
}
else ch[next][0] = 0, push(next), push(root);
}
int main() {
scanf("%d", &n);
insert(0x3f3f3f3f);
insert(0xcfcfcfcf);
while (n--) {
scanf("%d%d", &op, &x);
switch (op) {
case 1: insert(x); break;
case 2: remove(x); break;
case 3: find(x); printf("%d\n", size[ch[root][0]]); break;
case 4: printf("%d\n", val[kth(x+1)]); break;
case 5: printf("%d\n", val[per(x)]); break;
case 6: printf("%d\n", val[aft(x)]); break;
}
}
}