#include <bits/stdc++.h>
using namespace std;
ifstream fin("secv8.in");
ofstream fout("secv8.out");
int n,c,x,y;
char s;
int random(){
return (rand()<<8)+rand();
}
struct nod{
int e,pri;
int l,r;
nod *st,*dr;
nod(int _e){
e = _e;
pri = random();
l = r = 0;
st = dr = nullptr;
}
nod(int _e, int p){
e = _e;
pri = p;
l = r = 0;
st = dr = nullptr;
}
nod(int _e, nod *s, nod *d){
e = _e;
pri = random();
st = s;
dr = d;
l = r = 0;
}
nod(int _e, int p, nod *s, nod *d){
e = _e;
pri = p;
st = s;
dr = d;
l = r = 0;
}
};
void propag(nod *r){
if(r && r->e < 0){
r->e *= -1;
swap(r->st, r->dr);
swap(r->l, r->r);
if(r->st)
r->st->e *= -1;
if(r->dr)
r->dr->e *= -1;
}
}
void propagB(nod *r){
propag(r);
if(r->st)
propag(r->st);
if(r->dr)
propag(r->dr);
}
void show(nod *r){
if(!r)
return;
propag(r);
show(r->st);
fout<<r->e-1<<' ';
show(r->dr);
}
void showC(nod *r){
if(!r)
return;
propag(r);
showC(r->st);
cout<<r->e-1<<','<<r->pri<<','<<r->l<<','<<r->r<<' ';
showC(r->dr);
}
void clr(nod *r){
if(!r)
return;
clr(r->st);
clr(r->dr);
delete r;
}
void rotL(nod *&r){
nod *a = r->dr;
r->dr = a->st;
a->st = r;
r->r = 0;
if(r->dr)
r->r = r->dr->l+r->dr->r+1;
a->l = r->l+r->r+1;
r = a;
}
void rotR(nod *&r){
nod *a = r->st;
r->st = a->dr;
a->dr = r;
r->l = 0;
if(r->st)
r->l = r->st->l+r->st->r+1;
a->r = r->l+r->r+1;
r = a;
}
void balance(nod *&r){
propagB(r);
if(r->dr && r->dr->pri > r->pri)
rotL(r);
else if(r->st && r->st->pri > r->pri)
rotR(r);
}
void ins(nod *a, int k, nod *&r, int p){
if(!r){
r = a;
return;
}
propagB(r);
if(p < k){
if(r->dr)
p += r->dr->l;
r->r++;
ins(a, k, r->dr, p+1);
balance(r);
}else{
if(r->st)
p -= r->st->r;
r->l++;
ins(a, k, r->st, p-1);
balance(r);
}
}
nod* src(int k, nod *r, int p){
propagB(r);
if(p == k)
return r;
if(p < k)
return src(k, r->dr, p+1+r->dr->l);
return src(k, r->st, p-1-r->st->r);
}
void ers(int k, nod *&r, int p){
if(!r)
return;
propagB(r);
if(p < k){
ers(k, r->dr, p+1+r->dr->l);
r->r--;
}else if(p > k){
ers(k, r->st, p-1-r->st->r);
r->l--;
}else{
if(!r->st && !r->dr){
delete r;
r = nullptr;
}else{
p -= r->l+1;
if(r->dr && r->st){
if(r->dr->pri > r->st->pri)
rotL(r);
else
rotR(r);
}else if(r->dr){
rotL(r);
}else{
rotR(r);
}
p += r->l+1;
ers(k, r, p);
}
}
}
void split(int k, nod *&r, nod *&t){
nod *a = new nod(1, INT_MAX);
ins(a, k, r, r->l+1);
t = a->dr;
r = a->st;
delete a;
}
void join(int k, nod *&r, nod *&t){
nod *a = new nod(1, 0, r, t);
if(a->st)
a->l = r->l + r->r + 1;
if(a->dr)
a->r = t->l + t->r + 1;
r = a;
ers(k, r, r->l+1);
}
void del(int x, int y, nod *&r){
nod *a, *b;
split(y+1, r, b);
split(x, r, a);
join(x, r, b);
clr(a);
}
/*void del(int x, int y, nod *&r){
for(int i=x;i<=y;i++)
ers(x, r, r->l+1);
}*/
void rev(int x, int y, nod *&r){
nod *a, *b;
split(y+1, r, b);
split(x, r, a);
a->e *= -1;
propagB(a);
join(x, r, a);
propagB(r);
join(y+1, r, b);
propagB(r);
}
nod *r, *t;
int main()
{
srand(time(0));
fin>>n>>c;
while(n--){
fin>>s;
if(s == 'I'){
fin>>x>>y;
t = new nod(y+1);
if(r)
ins(t, x, r, r->l+1);
else
ins(t, x, r, 0);
}
if(s == 'A'){
fin>>x;
fout<<src(x, r, r->l+1)->e-1<<'\n';
}
if(s == 'R'){
fin>>x>>y;
rev(x, y, r);
}
if(s == 'D'){
fin>>x>>y;
del(x, y, r);
}
cout<<n<<'\n';
}
show(r);
clr(r);
return 0;
}