现在是只有查询排名错了,也有可能是其他的错误导致的。自己初学不会调,求助大佬/
#include <bits/stdc++.h>
#define mkpr make_pair
#define fi first
#define se second
#define F(i,a,b) for(int i=(a);i<=(b);i++)
#define dF(i,a,b) for(int i=(a);i>=(b);i--)
using namespace std;
inline int read(){int x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9'){x=(x<<1)+(x<<3)+(ch^48);ch=getchar();}return x*f;}
inline void write(int x){if (x < 0) x = ~x + 1, putchar('-');if (x > 9) write(x / 10);putchar(x % 10 + '0');}
inline void writeln(int x){write(x);putchar('\n');}
inline void writesp(int x){write(x);putchar(' ');}
inline int lowbit(int x) {return x&(-x);}
typedef pair<int,int> Pair;
const int N=1000005,inf=0x7f7f7f7f;
struct BST{int l,r,val,cnt,siz;} a[N];
int n,tot,root;
void New(int v){a[++tot].val=v;a[tot].cnt=a[tot].siz=1;}
void Build(){New(-inf);New(inf);root=1;a[1].r=2;}
void Insert(int p,int v){
a[p].siz++;
if(v==a[p].val) {a[p].cnt++; return ;}
if(v<a[p].val) {
if(a[p].l) Insert(a[p].l,v);
else {New(v);a[p].l=tot;}
}else {
if(a[p].r) Insert(a[p].r,v);
else {New(v);a[p].r=tot;}
}
}
int Qrank(int p,int v){
if(!p) return 0;
if(a[p].val==v) return a[a[p].l].siz+1;
if(a[p].val>v) return Qrank(a[p].r,v)+a[a[p].l].siz+a[p].cnt;
else return Qrank(a[p].l,v);
}
int Qkth(int p,int k){
if(!p) return inf;
if(a[a[p].l].siz>=k) return Qkth(a[p].l,k);
if(a[a[p].l].siz+a[p].cnt>=k) return a[p].val;
return Qkth(a[p].r,k-a[a[p].l].siz-a[p].cnt);
}
int Qfront(int p,int v,int ans){
if(a[p].val>=v){
if(!a[p].l) return ans;
else return Qfront(a[p].l,v,ans);
}else{
if(!a[p].r) return a[p].val;
else return Qfront(a[p].r,v,a[p].val);
}
}
int Qnxt(int p,int v,int ans){
if(a[p].val<=v){
if(!a[p].r) return ans;
else return Qnxt(a[p].r,v,ans);
}else{
if(!a[p].l) return a[p].val;
else return Qnxt(a[p].l,v,a[p].val);
}
}
int main(){
ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);
cin>>n;
while(n--){
int op,v;cin>>op>>v;
if(op==1){
cout<<Qrank(1,v)<<'\n';
}else if(op==2){
cout<<Qkth(1,v)<<'\n';
}else if(op==3){
cout<<Qfront(1,v,-inf)<<'\n';
}else if(op==4){
cout<<Qnxt(1,v,inf)<<'\n';
}else{
if(!tot){
a[++tot].val=v;a[tot].cnt=a[tot].siz=1;
}else Insert(1,v);
}
}
return 0;
}