#include<iostream>
#include<vector>
#include<ctime>
#include<random>
#ifdef _POSIX_SOURCE
#define getchar() getchar_unlocked()
#endif // _POSIX_SOURCE
using namespace std;
char p;
inline int getint()
{
p = ' '; while(p == ' ') p = getchar();
int read = 0; while(isdigit(p) && p != EOF)
{
read *= 10; read += (p - '0');
p = getchar();
}
return read;
}
mt19937 rng(time(nullptr));
struct nod
{
int v,sz,p,lazy; nod *c[2];
nod(int &h) : v(h),sz(1),p(rng()),lazy(0) {c[0] = NULL,c[1] = NULL;}
void prop()
{
if(!lazy) return;
swap(c[0],c[1]);
if(c[1]) c[1]->lazy ^= 1;
if(c[0]) c[0]->lazy ^= 1;
lazy = 0;
}
};
int size(nod *&treap){return treap ? treap->sz : 0;}
void split(nod *r,nod *&st,nod *&dr,int x,int cheie)
{
if(!r) st = NULL,dr = NULL;
else
{
r->prop(); cheie += size(r->c[0]);
if(cheie <= x) split(r->c[1],r->c[1],dr,x,cheie + 1),st = r;
else split(r->c[0],st,r->c[0],x,cheie - size(r->c[0])),dr = r;
r->sz = 1 + size(r->c[0]) + size(r->c[1]);
}
}
void merge(nod *&r,nod *st,nod *dr)
{
if(!st || !dr) r = st ? st : dr;
else
{
st->prop(),dr->prop();
if(st->p > dr->p) merge(st->c[1],st->c[1],dr),r = st;
else merge(dr->c[0],st,dr->c[0]),r = dr;
r->sz = 1 + size(r->c[0]) + size(r->c[1]);
}
}
void afis(nod *&t)
{
if(!t) return;
t->prop();
if(t->c[0]) afis(t->c[0]);
cout << t->v << " ";
if(t->c[1]) afis(t->c[1]);
}
int kth(nod *&t,int k)
{
t->prop();
int stanga = size(t->c[0]);
if(stanga >= k) return kth(t->c[0],k);
if(stanga + 1 == k) return t->v;
return kth(t->c[1],k - stanga - 1);
}
int main()
{
freopen("secv8.in","r",stdin);
freopen("secv8.out","w",stdout);
int q,a,b; char op; cin >> q >> a;
nod *treap = NULL,*st,*dr,*mid,*haha;
while(q--)
{
cin >> op >> a;
if(op == 'I')
{
cin >> b;
split(treap,st,dr,a - 2,0);
merge(st,st,new nod(b));
merge(treap,st,dr);
}
else if(op == 'A')
{
cout << kth(treap,a) << '\n';
}
else if(op == 'R')
{
cin >> b; a--,b--;
split(treap,st,dr,a-1,0);
split(dr,mid,haha,b-a,0);
if(mid)
{
mid->prop();
mid->lazy ^= 1;
}
merge(mid,mid,haha);
merge(treap,st,mid); }
else
{
cin >> b; a--,b--;
split(treap,st,dr,a-1,0);
split(dr,mid,haha,b-a,0);
merge(treap,st,haha);
}
}
afis(treap);
}