#include<iostream>
#include<fstream>
#include<time.h>
#include<cstdlib>
using namespace std;
const int N = 30100;
const int inf = 2000000000;
struct t {
int k, nrel;
int p;
t *f1, *f2;
t() {
k = p = 0;
nrel = 0;
}
t(int a, int b, t *c, t *d) {
k = a; p = b;
f1 = c; f2 = d;
nrel = 1;
}
};
t *rad, *nil;
int n;
void rotLeft(t* &r) {
t *temp = r->f1;
r->f1 = temp->f2;
temp->f2 = r;
r = temp;
}
void rotRight(t* &r) {
t *temp = r->f2;
r->f2 = temp->f1;
temp->f1 = r;
r = temp;
}
void recalc(t* &r) {
if(r != nil)
r->nrel = 1 + r->f1->nrel + r->f2->nrel;
}
void balance(t* &r) {
if(r->f2->p > r->p && r->f2->p >= r->f1->p)
rotRight(r);
else if(r->f1->p > r->p)
rotLeft(r);
recalc(r->f1);
recalc(r->f2);
recalc(r);
}
void insert(t* &r, int key, int val, int pri) {
if(r == nil) {
r = new t(key, pri, nil, nil);
return;
}
if(r->f1->nrel < val)
insert(r->f2, key, val - (r->f1->nrel) - 1, pri);
else
insert(r->f1, key, val, pri);
balance(r);
}
void erase(t* &r, int val) {
if(val == 0 || val == r->f1->nrel + 1) {
if(r->f1 == nil && r->f2 == nil)
r = nil;
else {
r->p = 0;
balance(r);
if(r->f1->p == 0 && r->f1->k == 666)
erase(r->f1, 0);
else
erase(r->f2, 0);
}
recalc(r);
return;
}
if(r->f1->nrel >= val) {
erase(r->f1, val);
recalc(r);
return;
}
if(val > r->f1->nrel + 1)
erase(r->f2, val - r->f1->nrel - 1);
recalc(r);
}
int query(t* &r, int val) {
if(val <= r->f1->nrel)
return query(r->f1, val);
val -= r->f1->nrel + 1;
if(val == 0)
return r->k;
return query(r->f2, val);
}
void split(t* &r, t* &a1, t* &a2, int val) {
insert(r, 666, val, inf);
a1 = r->f1;
a2 = r->f2;
}
void join(t* &r, t* &a1, t* &a2) {
r = new t(666, 0, a1, a2);
erase(r, a1->nrel + 1);
}
void deleteSecv(int poz1, int poz2) {
t *a1, *a2, *a3, *a4;
split(rad, a4, a3, poz2);
split(a4, a1, a2, poz1 - 1);
join(rad, a1, a3);
}
void print(t* &r) {
if(r == nil)
return;
print(r->f1);
printf("%d ", r->k);
print(r->f2);
}
int main() {
freopen("secv8.in", "r", stdin);
freopen("secv8.out", "w", stdout);
int i;
srand(777);
nil = new t;
nil->f1 = nil->f2 = nil;
rad = nil;
int x;
cin >> n;
cin >> x;
for(i = 1; i <= n; ++i) {
char op;
cin >> op;
/*if(i != 1) {
print(rad);
cout << "\n";
}*/
if(op == 'I') {
int key, e;
cin >> e >> key;
insert(rad, key, e - 1, rand()%inf + 1);
continue;
}
if(op == 'A') {
int poz;
cin >> poz;
cout << query(rad, poz) << "\n";
continue;
}
if(op == 'R') {
continue;
}
// D
int poz1, poz2;
cin >> poz1 >> poz2;
deleteSecv(poz1, poz2);
}
print(rad);
return 0;
}