#include<fstream>
#include<time.h>
#include<stdlib.h>
#define INF 1000000
using namespace std;
int m, t, k, val, p, u;
char c;
struct nod{
int val, vp, nr, inv;
nod *st, *dr;
nod(int val, int vp, int nr, int inv, nod *st, nod *dr){
this->val = val;
this->vp = vp;
this->nr = nr;
this->inv = inv;
this->st = st;
this->dr = dr;
}
};
nod *r, *nill, *x, *y, *z, *aux;
ifstream fin("secv8.in");
ofstream fout("secv8.out");
void upd(nod *r){
r->nr = r->st->nr + r->dr->nr + 1;
}
void lztr(nod *r){
if(r->inv == 1){
swap(r->st, r->dr);
r->st->inv ^= 1;
r->dr->inv ^= 1;
r->inv = 0;
}
}
void rotst(nod * &r){
lztr(r);
lztr(r->st);
nod *aux = r->st;
r->st = aux->dr;
aux->dr = r;
r = aux;
upd(r->dr);
upd(r);
}
void rotdr(nod * &r){
lztr(r);
lztr(r->dr);
nod *aux = r->dr;
r->dr = aux->st;
aux->st = r;
r = aux;
upd(r->st);
upd(r);
}
void gettr(nod * &r){
if(r->st->vp > r->vp){
rotst(r);
}
else{
if(r->dr->vp > r->vp){
rotdr(r);
}
}
}
void addtr(nod * &r, int p, int val, int t){
if(r == nill){
r = new nod(val, rand() + 1, 1, 0, nill, nill);
if(t == 1){
r->vp = INF;
}
return;
}
lztr(r);
if(r->st->nr + 1 >= p){
addtr(r->st, p, val, t);
}
else{
addtr(r->dr, p - (r->st->nr + 1), val, t);
}
gettr(r);
upd(r);
}
int srctr(nod *r, int p){
lztr(r);
if(r->st->nr + 1 == p){
return r->val;
}
if(r->st->nr + 1 >= p){
return srctr(r->st, p);
}
else{
return srctr(r->dr, p - (r->st->nr + 1) );
}
}
void deltr(nod * &r, int p){
if(r == nill){
return;
}
lztr(r);
if(r->st->nr + 1 != p){
if(p <= r->st->nr){
deltr(r->st, p);
}
else{
deltr(r->dr, p - (r->st->nr + 1) );
}
if(r != nill){
upd(r);
}
return;
}
if(r->st == nill && r->dr == nill){
delete r;
r = nill;
}
else{
if(r->st->vp > r->dr->vp){
rotst(r);
deltr(r->dr, r->dr->st->nr + 1);
}
else{
rotdr(r);
deltr(r->st, r->st->st->nr + 1);
}
if(r != nill){
upd(r);
}
}
}
void split(nod * &r, int p, nod * &st, nod * &dr){
addtr(r, p, 0, 1);
st = r->st;
dr = r->dr;
}
nod* join(nod *x, nod *y){
nod *r = new nod(0, INF, 0, 0, x, y);
upd(r);
deltr(r, x->nr + 1);
return r;
}
void afis(nod *r){
if(r != nill){
afis(r->st);
fout<< r->val <<" ";
afis(r->dr);
}
}
int main(){
srand( time(0) );
r = nill = new nod(0, 0, 0, 0, NULL, NULL);
fin>> m >> t;
for(; m; m--){
fin>> c;
if(c == 'I'){
fin>> k >> val;
addtr(r, k, val, 0);
continue;
}
if(c == 'A'){
fin>> k;
fout<< srctr(r, k) <<"\n";
continue;
}
fin>> p >> u;
split(r, u + 1, aux, z);
split(aux, p, x, y);
if(c == 'D'){
r = join(x, z);
}
else{
y->inv ^= 1;
r = join(x, y);
r = join(r, z);
}
}
afis(r);
return 0;
}