#8#9wa了,求求大佬教教我吧
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e6+5;
int rt,num,n,a;
int sz[maxn],fa[maxn],son[maxn][2],val[maxn],cnt[maxn];
void pushup(int x)
{
if(x){
sz[x]=cnt[x];
if(son[x][0]){
sz[x]+=sz[son[x][0]];
}
if(son[x][1]){
sz[x]+=sz[son[x][1]];
}
}
}
bool get(int x)
{
return x==son[fa[x]][1];
}
void clear(int x)
{
son[x][1]=son[x][0]=fa[x]=val[x]=sz[x]=cnt[x]=0;
}
void edit(int x,int f)
{
num++;
son[num][0]=son[num][1]=0;
fa[num]=f,sz[num]=1;
cnt[num]=1;
val[num]=x;
}
void rotate(int x)
{
int y=fa[x],z=fa[y];
bool side=get(x);
son[y][side]=son[x][side^1],fa[son[y][side]]=y;
son[x][side^1]=y,fa[y]=x,fa[x]=z;
if(z!=0) son[z][son[z][1]==y]=x;
pushup(y),pushup(x);
}
void splay(int x)
{
for(int i;(i=fa[x])!=0;rotate(x)){
if(fa[i]!=0) rotate(get(x)==get(i)?i:x);
}
rt=x;
}
void insert(int x)
{
if(rt==0){
edit(x,0);
rt=num;
return ;
}
if(val[rt]==x){
cnt[x]++;
pushup(rt);
return ;
}
for(int f=rt,now=son[rt][val[rt]<x];;f=now,now=son[now][val[now]<x]){
if(now==0){
edit(x,f);
son[f][val[f]<x]=num;
pushup(f);
splay(num);
return ;
}
if(val[now]==x){
cnt[now]++;
pushup(now);
pushup(f);
splay(now);
return ;
}
}
}
int find(int x)
{
int now=rt;
while(val[now]!=x&&now!=0) now=son[now][val[now]<x];
return now;
}
int lower()
{
int now=son[rt][0];
while(son[now][1]) now=son[now][1];
return now;
}
int upper()
{
int now=son[rt][1];
while(son[now][0]) now=son[now][0];
return now;
}
void del(int x)
{
int now=find(x);
splay(now);
if(cnt[rt]>1){
cnt[rt]--;
pushup(rt);
return ;
}
if(!(son[rt][0])&&!(son[rt][1])){
clear(rt);
rt=0;
return ;
}
if(son[rt][0]==0){
rt=son[rt][1];
clear(fa[rt]);
fa[rt]=0;
return ;
}else if(son[rt][1]==0){
rt=son[rt][0];
clear(fa[rt]);
fa[rt]=0;
return ;
}
int his=rt;
splay(lower());
son[rt][1]=son[his][1];
fa[son[his][1]]=rt;
pushup(rt);
clear(his);
}
int kth(int k)
{
int now=rt;
while(1){
if(son[now][0]&&k<=sz[son[now][0]]) now=son[now][0];
else{
int tmp=(son[now][0]?sz[son[now][0]]:0)+cnt[now];
if(k<=tmp) return val[now];
k-=tmp,now=son[now][1];
}
}
}
int Rank(int x)
{
int now=find(x);
splay(now);
return sz[son[now][0]]+1;
}
void test(int now)
{
if(son[now][0]!=0) test(son[now][0]);
printf("%d ",val[now]);
if(son[now][1]!=0) test(son[now][1]);
}
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++){
int jud,x;
scanf("%d%d",&jud,&x);
switch(jud){
case 1:
insert(x);
// test(rt);
// printf("\n");
break;
case 2:
del(x);
// test(rt);
// printf("\n");
break;
case 3:
insert(x);
printf("%d\n",Rank(x));
del(x);
break;
case 4:
printf("%d\n",kth(x));
break;
case 5:
insert(x);
// test(rt);
// printf("\n");
printf("%d\n",val[lower()]);
del(x);
// test(rt);
// printf("\n");
break;
case 6:
insert(x);
// test(rt);
// printf("\n");
printf("%d\n",val[upper()]);
del(x);
// test(rt);
// printf("\n");
break;
}
}
// printf("%d\n",a);
return 0;
}