#include <iostream>
#include <vector>
#include <algorithm>
#include <cassert>
#include <random>
#define debug(x) #x << " = " << x << '\n'
using ll = long long;
std::mt19937 rng(123);
struct Treap {
struct Node {
int key, prio, sz;
bool rev;
Node* l;
Node* r;
Node(int x = 0, int s = 0) : key(x), prio(rng()), sz(s), rev(false), l(nullptr), r(nullptr) {}
void push() {
if (rev) {
std::swap(l, r);
if (l) {
l -> rev ^= 1;
}
if (r) {
r -> rev ^= 1;
}
rev = false;
}
}
void refresh() {
sz = 1;
if (l) {
sz += l -> sz;
}
if (r) {
sz += r -> sz;
}
}
};
Node* root = new Node();
void split(Node* t, Node* &l, Node* &r, int x) {
if (!t) {
l = r = nullptr;
return;
}
t -> push();
int szl = 1 + (t -> l? t -> l -> sz : 0);
if (x < szl) {
split(t -> l, l, t -> l, x);
r = t;
} else {
split(t -> r, t -> r, r, x - szl);
l = t;
}
t -> refresh();
}
void join(Node* &t, Node* l, Node* r) {
if (!l || !r) {
t = l? l : r;
return;
}
l -> push();
r -> push();
if (l -> prio > r -> prio) {
join(l -> r, l -> r, r);
t = l;
} else {
join(r -> l, l, r -> l);
t = r;
}
t -> refresh();
}
void insert(int p, int v) {
Node* l;
Node* r;
split(root, l, r, p - 1);
join(root, l, new Node(v, 1));
join(root, root, r);
}
void erase(int st, int dr) {
Node* l;
Node* mid;
Node* r;
split(root, l, r, st - 1);
split(r, mid, r, dr - st + 1);
join(root, l, r);
}
int acces(int p) {
Node* l;
Node* mid;
Node* r;
split(root, l, r, p - 1);
split(r, mid, r, 1);
int ret = mid -> key;
join(root, l, mid);
join(root, root, r);
return ret;
}
void reverse(int st, int dr) {
Node* l;
Node* mid;
Node* r;
split(root, l, r, st - 1);
split(r, mid, r, dr - st + 1);
mid -> rev ^= 1;
join(root, l, mid);
join(root, root, r);
}
void print(Node* T) {
if (T == nullptr) {
return;
}
T -> push();
print(T -> l);
std::cout << T -> key << ' ';
print(T -> r);
}
void print() {
Node* ts;
split(root, root, ts, root -> sz - 1);
print(root);
std::cout << '\n';
}
};
int main() {
std::ios_base::sync_with_stdio(false);
std::cin.tie(0);
std::cout.tie(0);
#ifdef LOCAL
freopen("input.txt", "r", stdin);
#else
freopen("secv8.in", "r", stdin);
freopen("secv8.out", "w", stdout);
#endif
Treap DS;
int q, ts;
std::cin >> q >> ts;
for (int i = 0; i < q; i++) {
char type;
std::cin >> type;
if (type == 'I') {
int p, v;
std::cin >> p >> v;
DS.insert(p, v);
} else if (type == 'A') {
int p;
std::cin >> p;
std::cout << DS.acces(p) << '\n';
} else if (type == 'R') {
int l, r;
std::cin >> l >> r;
DS.reverse(l, r);
} else {
int l, r;
std::cin >> l >> r;
DS.erase(l, r);
}
}
DS.print();
return 0;
}