#include<bits/extc++.h>
using namespace std;
using namespace chrono;
using namespace __gnu_cxx;
using namespace __gnu_pbds;
#if 1
using ll=long long;
using uint=unsigned int;
using ull=unsigned long long;
using db=double;
using ldb=long double;
#ifdef _INT128_DEFINED
using i128=__int128;
using ui128=unsigned __int128;
#endif
#define _CLOSE_SYNC
#if __cplusplus>=201103L
#define _UM(_Key,_Type) unordered_map<_Key,_Type>
#define _US(_Type) unordered_set<_Type>
#define _UMM(_Key,_Type) unordered_multimap<_Key,_Type>
#define _UMS(_Type) unordered_multiset<_Type>
#define tostr(_Name) std::to_string(_Name)
#else
#define constexpr const
#endif
#define y0 __Y0_By_MySelf__
#define y1 __Y1_By_MySelf__
#define yn __Yn_By_MySelf__
#define j0 __J0_By_MySelf__
#define j1 __J1_By_MySelf__
#define jn __Jn_By_MySelf__
#define __lcm(_A,_B) ((_A)/__gcd((_A),(_B))*(_B))
#define _GPQ(_Type) std::priority_queue<_Type,vector<_Type>,greater<_Type>>
#define _SPQ(_Type,_Cmp) std::priority_queue<_Type,vector<_Type>,_Cmp>
#define _FPQ(_Type,_Cmp) std::priority_queue<_Type,vector<_Type>,decltype(&_Cmp)>
#define _PQ(_Type) std::priority_queue<_Type>
#define _MM(_Key,_Type) multimap<_Key,_Type>
#define _MS(_Type) multiset<_Type>
#define _P(_Type) pair<_Type,_Type>
#define _V(_Type) vector<_Type>
#define mem(_Num,_Arr) memset((_Arr),(_Num),sizeof(_Arr))
#define clr(_Arr) memset((_Arr),0,sizeof(_Arr))
#define neg(_Arr) memset((_Arr),-1,sizeof(_Arr))
#define fmax(_Arr) memset((_Arr),0x7f,sizeof(_Arr))
#define fmax_s(_Arr) memset((_Arr),0x3f,sizeof(_Arr))
#define fmin(_Arr) memset((_Arr),0x80,sizeof(_Arr))
#define fmin_s(_Arr) memset((_Arr),0xc0,sizeof(_Arr))
#define four_d(_Name) constexpr int _Name[4][2]={{0,1},{1,0},{0,-1},{-1,0}}
#define eight_d(_Name) constexpr int _Name[8][2]={{0,1},{1,1},{1,0},{1,-1},{0,-1},{-1,-1},{-1,0},{-1,1}};
#define _FF(_Name,_Begin,_End) for(auto _Name=(_Begin);_Name<(_End);_Name++)
#define _RF(_Name,_Begin,_End) for(auto _Name=(_Begin);_Name>(_End);_Name--)
#define _FE(_Container,...) for(auto _Name:__VA_ARGS__)
#define _SP(_Digit) fixed<<setprecision(_Digit)
#define _Case(_Value,...) case _Value:__VA_ARGS__;break
#ifndef ONLINE_JUDGE
#define _p(_X,_F) cerr<<(_X)<<" \n"[_F]<<flush
#define _psth cerr<<"\n--------------------"<<__LINE__<<"---------------------\n"<<flush
#define _pel cerr<<'\n'<<flush
#else
#define _p(_X,_F)
#define _psth
#define _pel
#endif
#ifdef _INT_TO_LL
#define int long long
#endif
#ifdef _RAND_USE_Mt19937
mt19937_64 __Random_Number__(system_clock::now().time_since_epoch().count());
#ifdef _INT_TO_LL
uniform_int_distribution<ull> __Random_Dist__(0,LLONG_MAX);
#else
uniform_int_distribution<uint> __Random_Dist__(0,INT_MAX);
#endif
#define rand() __Random_Dist__(__Random_Number__)
#define srand(__X) __Random_Number__.seed(__X)
#endif
constexpr ull HashP=1313131313131313131ull,HashP1=1111111111111111171ull,HashP2=37093201209218101ull,HashP3=3113333333333333333ull,HashP4=4444444444444444409ull,HashP5=370903201209218177ull;
constexpr int mod3=998244353,mod7=1000000007,mod9=1000000009;
using _Pi=pair<int,int>;
using _Vi=vector<int>;
using _Vpi=vector<_Pi>;
#endif
constexpr db alpha=.7;
struct{
int l,r,v,t,s,d;
}t[1000005];
int ord[1000005],cnt,r=0,q,opt,x;
stack<int> st;
void inord(int u){
if(!u){
return;
}
inord(t[u].l);
if(t[u].d){
ord[++cnt]=u;
}else{
st.push(u);
}
inord(t[u].r);
}
void init(int u){
t[u].l=t[u].r=0;
t[u].s=t[u].t=t[u].d=1;
}
void pushup(int u){
t[u].s=t[t[u].l].s+t[t[u].r].s+t[u].d;
t[u].t=t[t[u].l].t+t[t[u].r].t+1;
}
void build(int l,int r,int& u){
int mid=l+r>>1;
u=ord[mid];
if(l==r){
init(u);
return;
}else if(l<mid){
build(l,mid-1,t[u].l);
}else if(l==mid){
t[u].l=0;
}
build(mid+1,r,t[u].r);
pushup(u);
}
void rebuild(int& u){
cnt=0;
inord(u);
if(cnt){
build(1,cnt,u);
}else{
u=0;
}
}
bool check(int u){
if(db(t[u].s)*alpha<=db(max(t[t[u].l].s,t[t[u].r].s))){
return 1;
}
return 0;
}
void insert(int& u,int x){
if(!u){
u=st.top();
st.pop();
t[u].v=x;
init(u);
return;
}
t[u].s++;
t[u].t++;
if(t[u].v>=x){
insert(t[u].l,x);
}else{
insert(t[u].r,x);
}
if(check(u)){
rebuild(u);
}
}
int rnk(int u,int x){
if(!u){
return 0;
}
if(x>t[u].v){
return t[t[u].l].s+t[u].d+rnk(t[u].r,x);
}else{
return rnk(t[u].l,x);
}
}
int kth(int u,int k){
if(t[u].d&&t[t[u].l].s+1==k){
return t[u].v;
}else if(t[t[u].l].s>=k){
return kth(t[u].l,k);
}else{
return kth(t[u].r,k-t[t[u].l].s-t[u].d);
}
}
void delkth(int &u,int k){
t[u].s--;
if(t[u].d&&t[t[u].l].s+1==k){
t[u].d=0;
return;
}
if(t[t[u].l].s+t[u].d==k){
delkth(t[u].l,k);
}else{
delkth(t[u].r,k-t[t[u].l].s-t[u].d);
}
}
void del(int x){
delkth(r,rnk(r,x)+1);
if(t[r].t*alpha>=t[r].s){
rebuild(r);
}
}
signed main(){
#ifdef _USE_FREOPEN
ifstream cin(".in");
ofstream cout(".out");
#endif
#ifdef _CLOSE_SYNC
cin.tie(0)->sync_with_stdio(0);
#endif
_FF(i,1,1000005){
st.push(1000005-i);
}
cin>>q;
while(q--){
cin>>opt>>x;
switch(opt){
_Case(1,insert(r,x));
_Case(2,del(x));
_Case(3,cout<<rnk(r,x)+1<<'\n');
_Case(4,cout<<kth(r,x)<<'\n');
_Case(5,cout<<kth(r,rnk(r,x))<<'\n');
_Case(6,cout<<kth(r,rnk(r,x+1)+1)<<'\n');
}
}
return 0;
}