#include<bits/stdc++.h>
using namespace std;
int n, opt, x, cnt;
struct node{
int l, r, key;
int siz, val;
}t[100005];
inline void update(int p){
t[p].siz = t[t[p].l].siz + t[t[p].r].siz + 1;
}
inline int new_node(int x){
t[++cnt].l = t[cnt].r = 0;
t[cnt].siz = 1; t[cnt].val = x;
t[cnt].key = rand() % INT_MAX;
return cnt;
}
inline void split(int p, int k, int &l, int &r){
if(!p){l = r = 0; return;}
if(t[p].val <= k){
l = p; split(t[p].r, k, t[p].r, r);
}else{
r = p; split(t[p].l, k, l, t[p].l);
}update(p);
}
inline int merge(int l, int r){
if(!l || !r) return l + r;
if(t[l].key <= t[r].key) {
t[l].r = merge(t[l].r, r);
update(l); return l;
}else{
t[r].l = merge(l, t[r].l);
update(r); return r;
}
}
inline int kth(int p, int k){
if(t[t[p].l].siz <= k) return kth(t[p].l, k);
if(k == t[t[p].l].siz + 1) return t[p].val;
k -= (t[t[p].l].siz + 1); return kth(t[p].r, k);
}
int main(){srand(114514);
ios::sync_with_stdio(false); int l, r, root;
cin.tie(0); cout.tie(0); cin >> n; int p;
while(n--){ cin >> opt >> x;
if(opt == 1){
split(root, x, l, r);
root = merge(merge(l, new_node(x)),r);
}else if(opt == 2){
split(root, x, l, r);
split(l, x - 1, l, p);
p = merge(t[p].l, t[p].r);
root = merge(merge(l, p), r);
}else if(opt == 3){
split(root, x - 1, l, r);
cout << t[l].siz + 1 << '\n';
root = merge(l, r);
}else if(opt == 4){
cout << t[kth(root, x)].val << '\n';
}else if(opt == 5){
split(root, x - 1, l, r);
cout << t[kth(l, t[l].siz)].val << '\n';
root = merge(l, r);
}else{
split(root, x, l, r);
cout << t[kth(r, 1)].val << '\n';
root = merge(l, r);
}
}return 0;
}