#include <bits/stdc++.h>
using namespace std;
ifstream fin("secv8.in");
ofstream fout("secv8.out");
int sol;
struct Treap{
int pri, v, la, c;
Treap *st, *dr;
}*treap;
int D(Treap *treap)
{if(treap==NULL)return 0;
return treap->v;
}
void La(Treap *& treap)
{treap->la%=2;
if(treap->la==1)
{if(treap->st!=NULL)treap->st->la+=treap->la;
if(treap->dr!=NULL)treap->dr->la+=treap->la;
swap(treap->st, treap->dr);
}
treap->la=0;
}
void Split(Treap *treap, Treap *& st, Treap *& dr, int v)
{if(treap==NULL)
{st=dr=NULL;
return ;
}
if(treap->la%2!=0)La(treap);
if(D(treap->st)<v)
{Split(treap->dr, treap->dr, dr, v-D(treap->st)-1);
st=treap;
}
else
{Split(treap->st, st, treap->st, v);
dr=treap;
}
if(treap!=NULL)treap->v=D(treap->st)+D(treap->dr)+1;
}
void Merge(Treap *& treap, Treap *st, Treap *dr)
{if(st!=NULL)La(st);
if(dr!=NULL)La(dr);
if(st==NULL)
treap=dr;
else if(dr==NULL)
treap=st;
else
{if(st->pri<dr->pri)
{Merge(st->dr, st->dr, dr);
treap=st;
}
else
{Merge(dr->st, st, dr->st);
treap=dr;
}
}
if(treap!=NULL)treap->v=D(treap->st)+D(treap->dr)+1;
}
void Cauta(Treap *& treap, int v)
{if(treap!=NULL)
{La(treap);
if(D(treap->st)==v-1)sol=treap->c;
else if(D(treap->st)<v)Cauta(treap->dr, v-D(treap->st)-1);
else Cauta(treap->st, v);
treap->v=D(treap->st)+D(treap->dr)+1;
}
}
void DFS(Treap *& treap)
{if(treap!=NULL)
{La(treap);
DFS(treap->st);
fout<<treap->c<<" ";
DFS(treap->dr);
}
}
int main()
{ ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int n, a, b;
char oper;
fin>>n>>a;
treap=NULL;
while(n)
{fin>>oper;
if(oper=='I')
{fin>>a>>b;
Treap *tri1, *tri2, *tri3;
Split(treap, tri1, tri2, a-1);
tri3 = new Treap;
tri3->st=tri3->dr=NULL;
tri3->pri=rand(), tri3->v=1;
tri3->la=0, tri3->c=b;
Merge(treap, tri1, tri3);
Merge(treap, treap, tri2);
}
else if(oper=='R')
{fin>>a>>b;
Treap *tri1, *tri2, *tri3, *tri4;
Split(treap, tri1, tri2, a-1);
Split(tri2, tri3, tri4, b-a+1);
tri3->la++;
Merge(treap, tri1, tri3);
Merge(treap, treap, tri4);
}
else if(oper=='A')
{fin>>a;
Cauta(treap, a);
fout<<sol<<"\n";
}
else
{fin>>a>>b;
Treap *tri1, *tri2, *tri3, *tri4;
Split(treap, tri1, tri2, a-1);
Split(tri2, tri3, tri4, b-a+1);
Merge(treap, tri1, tri4);
}
n--;
}
DFS(treap);
return 0;
}