#include<bits/stdc++.h>
typedef long long ll;
using namespace std;
const int maxn=1e6+10;
map<int,int> m;
struct fan
{
int lp,rp;
int num;
}t[maxn<<6];
int n,cnt,root;
void build(ll l,ll r,ll x,int &rt)
{
if(!rt)
{
rt=++cnt;
t[rt]={0,0,0};
}
t[rt].num++;
ll mid=(l+r-1)>>1;
if(l==r) return;
if(x<=mid) build(l,mid,x,t[rt].lp);
else build(mid+1,r,x,t[rt].rp);
}
void Delete(ll l,ll r,ll x,int rt)
{
t[rt].num--;
if(l==r) return;
ll mid=(l+r-1)>>1;
if(x<=mid) Delete(l,mid,x,t[rt].lp);
else Delete(mid+1,r,x,t[rt].rp);
}
ll query1(ll l,ll r,ll x,int rt)
{
if(l==r) return 1;
ll mid=(l+r-1)>>1;
if(x>mid) return query1(mid+1,r,x,t[rt].rp)+t[t[rt].lp].num;
else return query1(l,mid,x,t[rt].lp);
}
ll query(ll l,ll r,ll x,int rt)
{
if(l==r) return l;
ll sum=t[t[rt].lp].num;
ll mid=(l+r-1)>>1;
if(sum>=x) return query(l,mid,x,t[rt].lp);
else return query(mid+1,r,x-sum,t[rt].rp);
}
signed main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin>>n;
for(int i=1;i<=n;i++)
{
int opt;
ll x;
cin>>opt>>x;
if(opt==1) build(-1e7,1e7,x,root),m[x]++;
if(opt==2) Delete(-1e7,1e7,x,root),m[x]--;
if(opt==3) cout<<query1(-1e7,1e7,x,root)<<endl;
if(opt==4) cout<<query(-1e7,1e7,x,root)<<endl;
if(opt==5) cout<<query(-1e7,1e7,query1(-1e7,1e7,x,root)-1,root)<<endl;
if(opt==6)
{
if(m.count(x)==0) cout<<query(-1e7,1e7,query1(-1e7,1e7,x,root),root)<<endl;
else cout<<query(-1e7,1e7,query1(-1e7,1e7,x,root)+1,root)<<endl;
}
}
return 0;
}