#include <bits/stdc++.h>
using namespace std;
struct node
{
int val,pr,sz,flp;
node *st,*dr;
node(node *st_,node *dr_,int val_,int pr_)
{
st=st_;
dr=dr_;
val=val_;
pr=pr_;
sz=st->sz+dr->sz+1;
flp=0;
}
node()
{
pr=-1;
sz=0;
flp=0;
}
};
node *nil,*rad;
void propag(node *nod)
{
if(nod->flp)
{
swap(nod->st,nod->dr);
nod->st->flp^=1;
nod->dr->flp^=1;
nod->flp=0;
}
}
void update(node *nod)
{
nod->sz=nod->st->sz+nod->dr->sz+1;
}
pair<node*,node*> split(node *nod,int poz)
{
if(nod==nil) return {nil,nil};
propag(nod);
if(poz<=nod->st->sz)
{
pair<node*,node*> aux=split(nod->st,poz);
nod->st=aux.second;
update(nod);
return {aux.first,nod};
}
else
{
pair<node*,node*> aux=split(nod->dr,poz-nod->st->sz-1);
nod->dr=aux.first;
update(nod);
return {nod,aux.second};
}
}
node* join(node *st,node *dr)
{
if(st==nil && dr==nil) return nil;
propag(st);
propag(dr);
if(st->pr>dr->pr)
{
st->dr=join(st->dr,dr);
update(st);
return st;
}
else
{
dr->st=join(st,dr->st);
update(dr);
return dr;
}
}
void dfs(node* nod)
{
if(nod==nil) return;
dfs(nod->st);
printf("%d ",nod->val);
dfs(nod->dr);
}
int random(int a,int b)
{
return a+(1LL*rand()*rand()*rand()+rand())%(b-a+1);
}
int main()
{
freopen("secv8.in","r",stdin);
freopen("secv8.out","w",stdout);
srand(time(0));
int q,c,poz,x,l,r;
char tip;
scanf("%d%d",&q,&c);
nil=new node();
nil->st=nil->dr=nil;
rad=nil;
for(int i=1;i<=q;i++)
{
scanf("\n%c",&tip);
if(tip=='I')
{
scanf("%d%d",&poz,&x);
pair<node*,node*> aux=split(rad,poz-1);
node* nod=new node(nil,nil,x,random(1,1e9));
rad=join(aux.first,nod);
rad=join(rad,aux.second);
}
else if(tip=='A')
{
scanf("%d",&poz);
pair<node*,node*> aux1=split(rad,poz-1);
pair<node*,node*> aux2=split(aux1.second,1);
printf("%d\n",aux2.first->val);
rad=join(aux1.first,aux2.first);
rad=join(rad,aux2.second);
}
else if(tip=='R')
{
scanf("%d%d",&l,&r);
pair<node*,node*> aux1=split(rad,l-1);
pair<node*,node*> aux2=split(aux1.second,r-l+1);
aux2.first->flp^=1;
rad=join(aux1.first,aux2.first);
rad=join(rad,aux2.second);
}
else
{
scanf("%d%d",&l,&r);
pair<node*,node*> aux1=split(rad,l-1);
pair<node*,node*> aux2=split(aux1.second,r-l+1);
rad=join(aux1.first,aux2.second);
}
}
dfs(rad);
return 0;
}