#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define INF 0x7ffffff
#define rep(i,s,t) for(register ll i = s;i <= t;++i)
#define per(i,t,s) for(register ll i = t;i >= s;--i)
struct splay_tree
{
ll f;
ll cnt;
ll siz;
ll val;
ll s[2];
};
ll n;
ll rt;
ll cnt;
splay_tree t[1000005];
inline ll read()
{
ll x = 0;
ll y = 1;
char c = getchar();
while(c < '0' || c > '9')
{
if(c == '-')
y = -y;
c = getchar();
}
while(c >= '0' && c <= '9')
{
x = (x << 3) + (x << 1) + (c - '0');
c = getchar();
}
return x * y;
}
inline void write(ll x)
{
if(x < 0)
{
putchar('-');
write(llabs(x));
return;
}
if(x > 9)
write(x / 10);
putchar(x % 10 + '0');
}
inline void push_up(ll p)
{
t[p].siz = t[t[p].s[0]].siz + t[t[p].s[1]].siz + t[p].cnt;
}
inline void rotate(ll p)
{
ll x = t[p].f;
ll y = t[x].f;
ll k = (t[x].s[1] == p);
t[y].s[t[y].s[1] == x] = p;
t[p].f = y;
t[x].s[k] = t[p].s[k ^ 1];
t[t[p].s[k ^ 1]].f = x;
t[p].s[k ^ 1] = x;
t[y].f = p;
push_up(x);
push_up(p);
}
inline void splay(ll p,ll k)
{
while(t[p].f != k)
{
ll x = t[p].f;
ll y = t[x].f;
if(y != k)
{
if((t[x].s[1] == p) ^ (t[y].s[1] == x))
rotate(p);
else
rotate(x);
}
rotate(p);
}
if(!k)
rt = p;
}
inline void insert(ll k)
{
ll x = rt;
ll y = 0;
while(x && t[x].val != k)
{
y = x;
x = t[x].s[k > t[x].val];
}
if(x)
t[x].cnt++;
else
{
x = ++cnt;
if(y)
t[y].s[k > t[y].val] = x;
t[x].cnt = 1;
t[x].siz = 1;
t[x].val = k;
t[x].f = y;
}
splay(x,0);
}
inline void up(ll k)
{
ll x = rt;
while(t[x].s[k > t[x].val] && t[x].val != k)
x = t[x].s[k > t[x].val];
splay(x,0);
}
inline ll rnk(ll k)
{
up(k);
return t[t[rt].s[0]].siz + 1;
}
inline ll kth(ll k)
{
ll x = rt;
while(t[x].siz >= k)
{
if(t[t[x].s[0]].siz >= k)
x = t[x].s[0];
else if(t[t[x].s[0]].siz + t[x].cnt >= k)
{
splay(x,0);
return t[x].val;
}
else
{
k -= t[t[x].s[0]].siz + t[x].cnt;
x = t[x].s[1];
}
}
return -1;
}
inline ll pre(ll k)
{
up(k);
if(t[rt].val < k)
return rt;
ll x = t[rt].s[0];
while(t[x].s[1])
x = t[x].s[1];
return x;
}
inline ll suf(ll k)
{
up(k);
if(t[rt].val > k)
return rt;
ll x = t[rt].s[1];
while(t[x].s[0])
x = t[x].s[0];
return x;
}
inline void del(ll k)
{
ll p = pre(k);
ll s = suf(k);
splay(p,0);
splay(s,p);
ll x = t[s].s[0];
if(t[x].cnt > 1)
{
t[x].cnt--;
splay(x,0);
}
else
{
t[s].s[0] = 0;
splay(s,0);
}
}
int main()
{
insert(INF);
insert(-INF);
n = read();
rep(i,1,n)
{
ll opt = 0;
ll tmp = 0;
opt = read();
tmp = read();
if(opt == 1)
insert(tmp);
else if(opt == 2)
del(tmp);
else if(opt == 3)
{
write(rnk(tmp) - 1);
putchar('\n');
}
else if(opt == 4)
{
write(kth(tmp + 1));
putchar('\n');
}
else if(opt == 5)
{
write(t[pre(tmp)].val);
putchar('\n');
}
else if(opt == 6)
{
write(t[suf(tmp)].val);
putchar('\n');
}
}
return 0;
}