#include <bits/stdc++.h>
using namespace std;
ifstream fin("secv8.in");
ofstream fout("secv8.out");
mt19937 mt(time(0));
const int inf=2e9;
struct nod{
int key;
int pr;
int cnt;
bool isrev;
nod *l, *r;
nod(int x):key(x),pr(mt()),cnt(1),isrev(0),l(NULL),r(NULL){}
};
typedef nod* treap;
treap root;
bool b;
int q;
string s;
int x,y;
int cnt(treap t)
{
if(t)return t->cnt;
return 0;
}
void push(treap t)
{
if(!t)return;
if(!t->isrev)return;
t->isrev=0;
swap(t->l,t->r);
if(t->l)t->l->isrev ^= 1;
if(t->r)t->r->isrev ^= 1;
}
void upd(treap t)
{
if(!t)return;
t->cnt=cnt(t->l)+cnt(t->r)+1;
}
void split(treap t, treap &st, treap &dr, int x, int ad = 0)
{
if(!t){st=dr=NULL;return;}
push(t);
int cheie = ad + cnt(t->l);
if(x<=cheie)split(t->l,st,t->l,x,ad),dr=t;
else split(t->r,t->r,dr,x,cheie+1),st=t;
upd(t);
}
void mer(treap &t, treap st, treap dr)
{
push(st);
push(dr);
if(!st)t=dr;
else if(!dr)t=st;
else if(st->pr>dr->pr)mer(st->r,st->r,dr),t=st;
else mer(dr->l,st,dr->l),t=dr;
upd(t);
}
int keyy(treap t)
{
if(t)return t->key;
return -1;
}
int care(int x)
{
x--;
treap t1,t2,t3;
split(root,t1,t2,x);
split(t2,t2,t3,1);
int rez = keyy(t2);
mer(root,t1,t2);
mer(root,root,t3);
return rez;
}
void ins(int poz, int x)
{
poz--;
treap maimic,maimare;
treap toins = new nod(x);
split(root,maimic,maimare,poz);
mer(root,maimic,toins);
mer(root,root,maimare);
}
void sterge(int x, int y)
{
x--;
y--;
treap maimic, maimare, trash;
split(root,maimic,maimare,x);
split(maimare,trash,maimare, y - x + 1);
mer(root,maimic,maimare);
}
void rev(int x, int y)
{
x--;
y--;
treap maimic, maimare, trash;
split(root,maimic,maimare,x);
split(maimare,trash,maimare, y - x + 1);
if(trash)trash->isrev^=1;
mer(root,maimic,trash);
mer(root,root,maimare);
}
void afis(treap t)
{
if(!t)return;
push(t);
afis(t->l);
fout<<t->key<<' ';
afis(t->r);
}
signed main()
{
fin>>q>>b;
while(q--)
{
fin>>s>>x;
if(s=="A")fout<<care(x)<<'\n';
else {
fin>>y;
if(s=="I")ins(x,y);
else if(s=="R")rev(x,y);
else sterge(x,y);
}
}
afis(root);
return 0;
}