#include<cstdio>
#include<cstdlib>
#include<ctime>
using namespace std;
int Sol,op,i,j,INS,INF,poz,V;
char tip;
struct T
{
int nr,K,P;
bool rev;
T *l,*r;
T(int K,int P,int nr,bool rev,T *l,T *r)
{
this->P=P;
this->K=K;
this->nr=nr;
this->rev=rev;
this->l=l;
this->r=r;
}
}*R,*nil,*p1,*p2,*p3,*aux;
int Rand() {return ((rand()%32768)<<15)+(rand()%32768)+1;}
void Splitrev(T *&n)
{
if(n->rev==0) return ;
n->rev=0;
T *aux=n->l;
n->l=n->r;
n->r=aux;
n->l->rev^=1;
n->r->rev^=1;
}
void reup(T *&n)
{
n->nr=n->l->nr+n->r->nr+1;
}
void rotleft(T *&n)
{
T *t=n->l;
n->l=t->r;t->r=n;
reup(n);
reup(t);
n=t;
}
void rotright(T *&n)
{
T *t=n->r;
n->r=t->l;t->l=n;
reup(n);
reup(t);
n=t;
}
void balance(T *&n)
{
if(n->l->P>n->P)
{
Splitrev(n);
Splitrev(n->l);
rotleft(n);
}
else
if(n->r->P>n->P)
{
Splitrev(n);
Splitrev(n->r);
rotright(n);
}
}
void Insert(T *&n,int Poz,int K,int P)
{
if(n==nil)
{
n=new T(K,P,1,0,nil,nil);
return ;
}
Splitrev(n);
if(n->l->nr>=Poz) Insert(n->l,Poz,K,P);
else Insert(n->r,Poz-n->l->nr-1,K,P);
reup(n);
balance(n);
}
void Erase(T *&n,int Poz)
{
Splitrev(n);
if(n->l->nr>=Poz) Erase(n->l,Poz);
else
if(n->l->nr+1<Poz) Erase(n->r,Poz-n->l->nr-1);
else
{
if(n->l==nil&&n->r==nil)
{
delete n;
n=nil;
}
else
{
if(n->l->P>n->r->P)
{
Splitrev(n->l);
rotleft(n);
}
else
{
Splitrev(n->r);
rotright(n);
}
Erase(n,Poz);
}
}
if(n!=nil) reup(n);
}
void acces(T *&n,int Poz)
{
Splitrev(n);
if(n->l->nr>=Poz) acces(n->l,Poz);
else
if(n->l->nr+1<Poz) acces(n->r,Poz-n->l->nr-1);
else
{
Sol=n->K;
return ;
}
}
void Split(T *&R,T *&Rl,T *&Rr,int Poz)
{
Insert(R,Poz,0,INF);
Rl=R->l;
Rr=R->r;
delete R;R=nil;
}
void Join(T *&R,T *&Rl,T *&Rr)
{
R=new T(0,0,Rl->nr+Rr->nr+1,0,Rl,Rr);
Erase(R,Rl->nr+1);
}
void afis(T *&R)
{
if(R==nil) return ;
Splitrev(R);
afis(R->l);
printf("%d ",R->K);
afis(R->r);
}
int main()
{
freopen("secv8.in","r",stdin);
freopen("secv8.out","w",stdout);
srand(time(0));
scanf("%d",&op);
scanf("%d\n",&i);
INF=(1<<30)+5;INS=0;
nil=new T(0,0,0,0,0,0);
while(op)
{
op--;
scanf("%c ",&tip);
if(tip=='I')
{
scanf("%d",&poz);
scanf("%d",&V);
INS++;
if(INS==1) R=new T(V,Rand(),1,0,nil,nil);
else Insert(R,poz-1,V,Rand());
}
else
if(tip=='A')
{
scanf("%d",&poz);
acces(R,poz);
printf("%d\n",Sol);
}
else
if(tip=='R')
{
scanf("%d",&i);
scanf("%d",&j);
Split(R,aux,p3,j);
Split(aux,p1,p2,i-1);
p2->rev^=1;
Join(aux,p1,p2);
Join(R,aux,p3);
}
else
if(tip=='D')
{
scanf("%d",&i);
scanf("%d",&j);
Split(R,aux,p3,j);
Split(aux,p1,p2,i-1);
Join(R,p1,p3);
}
scanf("\n");
}
afis(R);
printf("\n");
return 0;
}