#include<bits/stdc++.h>
using namespace std;
int q,l[10010],r[10010],v[10010],cnt[10010],fa[10010],len;
void add(int val){
int pos=1;
if(len==0){
cnt[++len]++,v[len]=val;
return;
}
while(1){
if(v[pos]==val){
cnt[pos]++;
return;
}
if(val>v[pos]){
if(r[pos]==0){
v[++len]=val,r[pos]=len,cnt[r[pos]]++,fa[r[pos]]=pos;
return;
}else{
pos=r[pos];
}
}else{
if(l[pos]==0){
v[++len]=val,l[pos]=len,cnt[l[pos]]++,fa[l[pos]]=pos;
return;
}else{
pos=l[pos];
}
}
}
}
int dfs(int sum,int pos,int val){
if(val>v[pos]){
if(r[pos]==0) return sum+1;
return dfs(sum+cnt[pos],r[pos],val);
}else if(val<v[pos]){
if(l[pos]==0) return sum+1;
return dfs(sum+cnt[pos],l[pos],val);
}else{
return sum+1;
}
}
int sum;
bool f;
void fin(int pos,int num){
if(pos==0) return;
fin(l[pos],num);
if(f) return;
sum+=cnt[pos];
if(sum>=num){
cout<<v[pos]<<endl;
f=1;
return;
}
fin(r[pos],num);
if(f) return;
}
int main(){
cin>>q;
for(int i=1;i<=q;i++){
int u,val;
cin>>u>>val;
if(u==1){
cout<<dfs(0,1,val)<<endl;
}else if(u==2){
sum=f=0;
fin(1,val);
}else if(u==3){
int pos=dfs(0,1,val);
if(l[pos]!=0){
int lpos=l[pos];
while(1){
if(r[lpos]==0) break;
lpos=r[lpos];
}
cout<<v[lpos]<<endl;
}else{
int tpos=pos;
bool f=0;
while(1){
if(fa[tpos]==0) break;
if(v[fa[tpos]]<val){
cout<<v[fa[tpos]]<<endl;
f=1;
break;
}
tpos=fa[tpos];
}
if(!f){
cout<<"-2147483647\n";
}
}
}else if(u==4){
int pos=dfs(0,1,val);
if(r[pos]!=0){
int rpos=r[pos];
while(1){
if(l[rpos]==0) break;
rpos=l[rpos];
}
cout<<v[rpos]<<endl;
}else{
int tpos=pos;
bool f=0;
while(1){
if(fa[tpos]==0) break;
if(v[fa[tpos]]>val){
cout<<v[fa[tpos]]<<endl;
f=1;
break;
}
tpos=fa[tpos];
}
if(!f){
cout<<"2147483647\n";
}
}
}else if(u==5){
add(val);
}
}
}