#include <iostream>
#include <algorithm>
#include <cstdlib>
#include <ctime>
using namespace std;
class treap {
public:
int value;
int priority;
int din;
treap *left,*right;
bool lazy;
treap(int value=0,int priority=0,int din=0,treap *left=NULL, treap *right=NULL, bool lazy=false): value(value), priority(priority), din(din), left(left), right(right), lazy(lazy) {}
~treap(){
if(this->left!=this){
delete left;
delete right;
}
}
}*rad,*nil;
inline void fii_lenesi(treap* &t) {
if(t==nil)
return;
if(t->lazy){
t->left->lazy^=1;
t->right->lazy^=1;
swap(t->left,t->right);
t->lazy=0;
}
}
inline void calc_din(treap* &t) {
if(t!=nil)
t->din=1+t->left->din+t->right->din;
}
inline void rot_right(treap* &x) {
treap *y=x->left;
fii_lenesi(x);
fii_lenesi(y);
x->left=y->right;
y->right=x;
x=y;
}
inline void rot_left(treap* &y) {
treap *x=y->right;
fii_lenesi(y);
fii_lenesi(x);
y->right=x->left;
x->left=y;
y=x;
}
inline void balance(treap* &t) {
if(t->priority<t->left->priority){
rot_right(t);
calc_din(t->right);
}
else if(t->priority<t->right->priority){
rot_left(t);
calc_din(t->left);
}
calc_din(t);
}
void insert(treap* &t,int s,int val,int pr) {
if(t==nil){
t=new treap(s,pr,1,nil,nil);
return;
}
fii_lenesi(t);
if(val==1)
insert(t->left,s,val,pr);
else if(val<=t->left->din+1)
insert(t->left,s,val,pr);
else
insert(t->right,s,val-t->left->din-1,pr);
balance(t);
}
void coboara(treap* &t) {
if(t==nil)
return;
if(t->left==nil && t->right==nil){
delete t;
t=nil;
return;
}
fii_lenesi(t);
if(t->priority<t->left->priority && t->priority<t->right->priority){
if(t->left->priority<t->right->priority){
rot_left(t);
coboara(t->left);
}
else{
rot_right(t);
coboara(t->right);
}
}
else if(t->priority<t->left->priority){
rot_right(t);
coboara(t->right);
}
else if(t->priority<t->right->priority){
rot_left(t);
coboara(t->left);
}
calc_din(t);
}
int access(treap* &t, int val) {
fii_lenesi(t);
if(val<=t->left->din)
return access(t->left,val);
else if(val==t->left->din+1)
return t->value;
else
return access(t->right,val-t->left->din-1);
}
/*void parc(treap* &t) {
if(t==nil)
return;
parc(t->left);
cout<<t->value<<' ';
parc(t->right);
}*/
void del(int st, int dr) {
insert(rad,-1,st,60001);
insert(rad,-2,dr+2,60000);
delete rad->right->left;
rad->right->left=nil;
rad->right->priority=-1;
coboara(rad->right);
rad->priority=-1;
coboara(rad);
}
void rev(int st,int dr) {
insert(rad,-1,st,60001);
insert(rad,-2,dr+2,60000);
rad->right->left->lazy=1;
rad->right->priority=-1;
coboara(rad->right);
rad->priority=-1;
coboara(rad);
}
int main()
{
//ifstream cin("secv8.in");
//ofstream cout("secv8.out");
int n;
bool aux;
cin>>n>>aux;
char tip;
int k,e,i,j;
cin>>tip>>k>>e;
srand(25);
nil=new treap(0,0,0);
nil->left=nil;
nil->right=nil;
rad=new treap(e,rand()%30000+1,1,nil,nil);
n--;
int sz=1;
while(n--){
cin>>tip;
if(tip=='I'){
cin>>k>>e;
insert(rad,e,k,rand()%30000+1);
sz++;
}
else if(tip=='A'){
cin>>k;
cout<<access(rad,k)<<'\n';
}
else if(tip=='R'){
cin>>i>>j;
rev(i,j);
}
else{
cin>>i>>j;
del(i,j);
sz-=(j-i+1);
}
}
/*if(sz){
cout<<access(rad,1);
for(int i=2;i<=sz;i++)
cout<<' '<<access(rad,i);
}*/
cout<<'\n';
//cin.close();
//cout.close();
return 0;
}