#include <cstdio>
#include <cstdlib>
#include <time.h>
typedef struct _T {
_T *l, *r;
int k, s, p;
bool lz;
_T(int key) {
k = key;
s = 1;
p = rand() ^ rand();
l = r = NULL;
lz = false;
}
~_T() { delete l; delete r}
void rec() {
s = 1;
prop();
if(l != NULL) s += l -> s;
if(r != NULL) s += r -> s;
}
void prop() {
if(lz == true) {
lz = false;
_T *aux;
aux = l;
l = r;
r = aux;
if(l != NULL) l -> lz ^= 1;
if(r != NULL) r -> lz ^= 1;
}
}
} *T;
void recalc(T x) {
if(x != NULL) x -> recalc();
}
int getSize(T x) {
if(x == NULL) return 0;
recalc(x);
return x -> s;
}
void split(T x, int p, T &l, T &r, int extra) {
l = r = NULL;
if(x == NULL) return;
recalc(x);
int poz = 1 + extra + getSize(x -> l);
if(poz < p) {
split(x -> r, p, x -> r, r, poz);
l = x;
recalc(l);
} else {
split(x -> l, p, l, x -> l, extra);
r = x;
recalc(r);
}
}
T join(T l, T r) {
if(l == NULL) return r;
if(r == NULL) return l;
recalc(l);
recalc(r);
if(l -> pr < r -> pr) {
l -> r = join(l -> r, r);
recalc(l);
return l;
} else {
r -> l = join(l, r -> l);
recalc(r);
return r;
}
}
T add(T x, int k, int e) {
T l, r;
split(x, k, l, r, 0);
return join(join(l, new _T(e)), r);
}
T erase(T x, int p1, int p2) {
T l, m, r;
split(x, p2 + 1, m, r, 0);
split(m, p1, l, m, 0);
delete(m);
return join(l, r);
}
T reverse(T x, int p1, int p2) {
T l, m, r;
split(x, p2 + 1, m, r, 0);
split(m, p1, l, m, 0);
m -> lz = true;
return join(join(l, m), r);
}
int acces(T x, int k, int extra) {
recalc(x);
int poz = 1 + extra + getSize(t -> l);
if(poz == k)
return x -> k;
else if(poz < k)
return acces(x -> r, k, poz);
else
return acces(x -> l, k, extra);
}
int main() {
int n, bit, a1, a2;
char ch;
T x = NULL;
FILE *fin = fopen("secv8.in", "r");
FILE *fout = fopen("secv8.out", "w");
fscanf(fin, "%d%d", &n, &bit);
for(int i = 0; i < n; ++i) {
ch = fgetc(fin);
while(ch == ' ' || ch == '\n')
ch = fgetc(fin);
if(ch == 'I') {
fscanf(fin, "%d%d", &a1, &a2);
x = add(x, a1, a2);
} else if(ch == 'D') {
fscanf(fin, "%d%d", &a1, &a2);
x = erase(x, a1, a2);
} else if(ch == 'R') {
fscanf(fin, "%d%d", &a1, &a2);
x = reverse(x, a1, a2);
} else if(ch == 'A') {
fscanf(fin, "%d", &a1);
fprintf(fout, "%d\n", acces(x, a1, 0));
}
}
n = getSize(x);
for(int i = 1; i <= n; ++i)
fprintf(fout, "%d ", acces(x, i, 0));
fclose(fin);
fclose(fout);
}