#include<bits/stdc++.h>
const int maxn = 1e5 + 5;
using namespace std;
int opt[maxn], a[maxn], b[maxn], n, m, sum[maxn << 2];
int ls(int rt) {
return rt << 1;
}
int rs(int rt) {
return rt << 1 | 1;
}
void modify(int rt, int l, int r, int x, int d) {
if (l == r) {
sum[rt] += d;
return;
}
int mid = (l + r) >> 1;
if (x <= mid) {
modify(ls(rt), l, mid, x, d);
} else {
modify(rs(rt), mid + 1, r, x, d);
}
sum[rt] = sum[ls(rt)] + sum[rs(rt)];
}
int ask1(int rt, int l, int r, int L, int R) {
if (L <= l && r <= R) {
return sum[rt];
}
int mid = (l + r) >> 1;
int res = 0;
if (L <= mid) {
res += ask1(ls(rt), l, mid, L, R);
}
if (R >= mid + 1) {
res += ask1(rs(rt), mid + 1, r, L, R);
}
return res;
}
int ask2(int rt, int l, int r, int x) {
if (l == r) {
return l;
}
int mid = (l + r) >> 1;
int limit = sum[ls(rt)];
if (limit >= x) {
return ask2(ls(rt), l, mid, x);
} else {
return ask2(rs(rt), mid + 1, r, x - limit);
}
}
int main() {
scanf("%d", &n);
for (int i = 1; i <= n; ++i) {
scanf("%d%d", &opt[i], &a[i]);
b[++m] = a[i];
}
sort(b + 1, b + 1 + m);
m = unique(b + 1, b + 1 + m) - 1 - b;
for (int i = 1; i <= n; ++i) {
int x = a[i];
if (opt[i] != 4) {
x = lower_bound(b + 1, b + 1 + m, x) - b;
}
if (opt[i] == 1) {
modify(1, 1, n, x, 1);
} else if (opt[i] == 2) {
modify(1, 1, n, x, -1);
} else if (opt[i] == 3) {
printf("%d\n", ask1(1, 1, n, 1, x - 1) + 1);
} else if (opt[i] == 4) {
printf("%d\n", b[ask2(1, 1, n, x)]);
} else if (opt[i] == 5) {
printf("%d\n", b[ask2(1, 1, n, ask1(1, 1, n, 1, x - 1))]);
} else if (opt[i] == 6) {
printf("%d\n", b[ask2(1, 1, n, ask1(1, 1, n, 1, x) + 1)]);
}
}
return 0;
}