#include using namespace std; const int RANGE = 20005; const int QUERY = 20005; struct Query { char X; int Y, Z; }; int N, nQuery; Query query[QUERY]; void read() { cin >> N >> nQuery; for (int i = 0; i < nQuery; ++i) { cin >> query[i].X >> query[i].Y >> query[i].Z; } } void work() { long long idx2sumL[RANGE] = {}; long long idx2sumR[RANGE] = {}; for (int i = 0; i < nQuery; ++i) { Query &Q = query[i]; if (Q.X == 'L') { idx2sumL[Q.Y] += Q.Z; } else if (Q.X == 'R') { idx2sumR[Q.Y] += Q.Z; } else if(Q.X == 'C') { long long ans = 0; for (int i = Q.Y; i < Q.Z; ++i) { ans += idx2sumL[i]; ans += idx2sumR[i]; } cout << ans << endl; } int toR = idx2sumL[0]; int toL = idx2sumR[N - 1]; for (int i = 0; i + 1 < N; ++i) idx2sumL[i] = idx2sumL[i + 1]; idx2sumL[N - 1] = toL; for (int i = N - 1; i - 1 >= 0; --i) idx2sumR[i] = idx2sumR[i - 1]; idx2sumR[0] = toR; } } int main() { read(); work(); return 0; }