#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define MAX 200002 int n; int q; char buf[3]; pair mo(long long int t, long long int ich,bool x){ //false left,true right if (x){ t %= n; ich -= t; if (ich < 0){ ich++; x ^= 1; } ich = abs(ich); } else{ t %= n; ich += t; if (ich >= n){ ich -= n; ich = n - 1 - ich; x ^= 1; } } return make_pair(ich, x); } pair kari; struct BIT{ long long int bit[MAX]; BIT(){ for (int i = 0; i < MAX; i++){ bit[i] = 0; } } void add(int i, long long int x){ i++; while (i < MAX){ bit[i] += x; i += i&-i; } } long long int sum(int i){ long long int r = 0; i++; while (i){ r += bit[i]; i -= i&-i; } return r; } long long int q(int a, int b){ return sum(b) - sum(a - 1); } }; BIT B[2]; void ins(int a, int b, int c){ B[b].add(a, c); } int main(){ scanf("%d%d", &n, &q); while (q--){ scanf("%s", buf); int t, y, z; scanf("%d%d%d", &t, &y, &z); if (buf[0] == 'L'){ kari = mo(t, y, false); ins(kari.first, kari.second, z); continue; } if (buf[0] == 'R'){ kari = mo(t, y, true); ins(kari.first, kari.second, z); continue; } long long int ans = 0; t %= n; { int l = y; int r = z; l -= t; if (l < 0){ l++; l = abs(l); } r -= t; if (r < 0){ r++; r = abs(r); } if (l > r){ swap(l, r); } ans += B[1].q(l, r-1); } { int l = y; int r = z; l += t; r += t; if (l >= n){ l -= n; l = n - 1 - l; } if (r >= n){ r -= n ; r = n - 1 - r; } if (l > r){ swap(l, r); } ans += B[0].q(l, r-1); } printf("%lld\n", ans); } return 0; }