#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; class BIT{ /*binary indexed tree*/ private: vector data; int size; public: BIT(int n): data(n+1,0),size(n){ return; } long long sum(int l, int r ){ // return sum in [l+1,r] or (l,r] return sum_(r)-sum_(l); } long long sum_(int i){ // return sum (0, i] long long ans = 0; while( 0 < i ){ ans += data[i]; i -= i&-i; // 11010110 -> 1010100 } return ans; } void add(int i, int x){ // add x to i while( i <= size ){ data[i] += x; i+= i&-i; } return; } }; int main(){ int N,Q; cin >> N >> Q; int range=2*N; BIT b(range); //[1,N],[N+1,2*N] note that 2*N=1 for( int i = 1 ; i <= Q; i++){ char c; int x,y; cin >> c >> x>>y; if( c=='R'){ x-=i; x=(x%(range)+(range))%(range)+1; //cout << x << endl; b.add(x,y); } if( c=='L'){ x=2*N-1-x; x-=i; x=(x%(range)+(range))%(range)+1; //cout << x << endl; b.add(x,y); } if( c=='C'){ int x1,y1; x1=x; y1=y; x1-=i; y1-=i; x1=(x1%(range)+(range))%(range)+1; y1=(y1%(range)+(range))%(range)+1; long long ans = 0; if( x1 > y1 ){ ans+=b.sum(x1-1,2*N); ans+=b.sum(0,y1-1); } else{ ans += b.sum(x1-1,y1-1); } //cout << x1<<"-"< y1 ){ ans += b.sum(y1,x1); } else{ ans+=b.sum(y1,2*N); ans+=b.sum(0,x1); } //cout << x1<<"-"<