#include <bits/stdc++.h>
using namespace std;
typedef struct Node {
Node *l, *r;
int k, p, size;
bool lazy;
Node(int _k) {
k = _k;
p = rand() ^ rand() ^ rand();
l = r = NULL;
size = 1;
lazy = false;
}
~Node() {
delete l;
delete r;
}
void refresh() {
size = 1;
if(l != NULL) size += l->size;
if(r != NULL) size += r->size;
if(lazy) {
swap(l, r);
if(l != NULL) l->lazy ^= 1;
if(r != NULL) r->lazy ^= 1;
lazy = false;
}
}
} *Treap;
int getsize(Treap t) {
if(t == NULL) return 0;
return t->size;
}
Treap join(Treap a, Treap b) {
if(a == NULL) return b;
if(b == NULL) return a;
a->refresh();
b->refresh();
if(a->p < b->p) {
a->r = join(a->r, b);
a->refresh();
return a;
} else {
b->l = join(a, b->l);
b->refresh();
return b;
}
}
void split(Treap t, int poz, Treap &a, Treap &b, int pleft) {
a = b = NULL;
if(t == NULL) return;
t->refresh();
int px = pleft + 1 + getsize(t->l);
if(px < poz) {
split(t->r, poz, t->r, b, px);
t->refresh();
a = t;
} else {
split(t->l, poz, a, t->l, pleft);
t->refresh();
b = t;
}
}
Treap add(Treap t, int val, int poz) {
Treap l, r;
split(t, poz, l, r, 0);
return join(join(l, new Node(val)), r);
}
Treap del(Treap t, int l, int r) {
Treap lT, rT, mT;
split(t, r + 1, mT, rT, 0);
split(mT, l, lT, mT, 0);
delete mT;
return join(lT, rT);
}
int findT(Treap t, int k) {
Treap lT, rT, mT;
split(t, k + 1, mT, rT, 0);
split(mT, k, lT, mT, 0);
int rez = mT->k;
join(join(lT, mT), rT);
return rez;
}
Treap rev(Treap t, int l, int r) {
Treap lT, rT, mT;
split(t, r + 1, mT, rT, 0);
split(mT, l, lT, mT, 0);
mT->lazy ^= 1;
return join(join(lT, mT), rT);
}
char getCh(FILE *fin) {
char ch = fgetc(fin);
while(!isalpha(ch))
ch = fgetc(fin);
return ch;
}
int main() {
srand(time(NULL));
int n, garb;
Treap t = NULL;
FILE *fin = fopen("secv8.in", "r");
FILE *fout = fopen("secv8.out", "w");
fscanf(fin, "%d%d", &n, &garb);
for(int i = 0; i < n; ++i) {
char ch = getCh(fin);
if(ch == 'I') {
int k, e;
fscanf(fin, "%d%d", &k, &e);
t = add(t, e, k);
} else if(ch == 'D') {
int i, j;
fscanf(fin, "%d%d", &i, &j);
t = del(t, i, j);
} else if(ch == 'R') {
int i, j;
fscanf(fin, "%d%d", &i, &j);
t = rev(t, i, j);
} else {
int k;
fscanf(fin, "%d", &k);
fprintf(fout, "%d\n", findT(t, k));
}
}
for(int i = 1; i <= t->size; ++i)
fprintf(fout, "%d ", findT(t, i));
fclose(fin);
fclose(fout);
return 0;
}