#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
typedef long long ll;
const int MAXN = 300005;
struct Mast {
int s, a;
};
Mast active_masts[MAXN];
ll tree[4 * MAXN];
ll lazy_c[4 * MAXN];
ll lazy_d[4 * MAXN];
inline ll sum_range(ll L, ll R) {
if (L > R) return 0;
return (L + R) * (R - L + 1) / 2;
}
void push(int v, int tl, int tr) {
if (lazy_c[v] == 0 && lazy_d[v] == 0) return;
int tm = (tl + tr) / 2;
ll lc = lazy_c[v];
ll ld = lazy_d[v];
tree[2 * v] += (ll)(tm - tl + 1) * lc + ld * sum_range(tl, tm);
lazy_c[2 * v] += lc;
lazy_d[2 * v] += ld;
tree[2 * v + 1] += (ll)(tr - tm) * lc + ld * sum_range(tm + 1, tr);
lazy_c[2 * v + 1] += lc;
lazy_d[2 * v + 1] += ld;
lazy_c[v] = 0;
lazy_d[v] = 0;
}
void update(int v, int tl, int tr, int l, int r, ll c, ll d) {
if (l > r) return;
if (l == tl && r == tr) {
tree[v] += (ll)(tr - tl + 1) * c + d * sum_range(tl, tr);
lazy_c[v] += c;
lazy_d[v] += d;
} else {
push(v, tl, tr);
int tm = (tl + tr) / 2;
update(2 * v, tl, tm, l, min(r, tm), c, d);
update(2 * v + 1, tm + 1, tr, max(l, tm + 1), r, c, d);
tree[v] = tree[2 * v] + tree[2 * v + 1];
}
}
ll query(int v, int tl, int tr, int l, int r) {
if (l > r) return 0;
if (l == tl && r == tr) return tree[v];
push(v, tl, tr);
int tm = (tl + tr) / 2;
return query(2 * v, tl, tm, l, min(r, tm)) + query(2 * v + 1, tm + 1, tr, max(l, tm + 1), r);
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int n, m;
if (!(cin >> n >> m)) return 0;
for (int i = 0; i < m; ++i) {
char type;
cin >> type;
if (type == 'P') {
int x, s, a;
cin >> x >> s >> a;
active_masts[x] = {s, a};
int k = (s - 1) / a;
int Lm = max(1, x - k);
int Rm = min(n, x + k);
update(1, 1, n, Lm, x, (ll)s - (ll)a * x, (ll)a);
update(1, 1, n, x + 1, Rm, (ll)s + (ll)a * x, -(ll)a);
} else if (type == 'U') {
int x;
cin >> x;
int s = active_masts[x].s;
int a = active_masts[x].a;
int k = (s - 1) / a;
int Lm = max(1, x - k);
int Rm = min(n, x + k);
update(1, 1, n, Lm, x, -((ll)s - (ll)a * x), -(ll)a);
update(1, 1, n, x + 1, Rm, -((ll)s + (ll)a * x), (ll)a);
} else if (type == 'Z') {
int x1, x2;
cin >> x1 >> x2;
ll total_sum = query(1, 1, n, x1, x2);
ll count = (ll)x2 - x1 + 1;
cout << total_sum / count << "\n";
}
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8YWxnb3JpdGhtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnR5cGVkZWYgbG9uZyBsb25nIGxsOwoKY29uc3QgaW50IE1BWE4gPSAzMDAwMDU7CgpzdHJ1Y3QgTWFzdCB7CiAgICBpbnQgcywgYTsKfTsKCk1hc3QgYWN0aXZlX21hc3RzW01BWE5dOwpsbCB0cmVlWzQgKiBNQVhOXTsKbGwgbGF6eV9jWzQgKiBNQVhOXTsKbGwgbGF6eV9kWzQgKiBNQVhOXTsKCmlubGluZSBsbCBzdW1fcmFuZ2UobGwgTCwgbGwgUikgewogICAgaWYgKEwgPiBSKSByZXR1cm4gMDsKICAgIHJldHVybiAoTCArIFIpICogKFIgLSBMICsgMSkgLyAyOwp9Cgp2b2lkIHB1c2goaW50IHYsIGludCB0bCwgaW50IHRyKSB7CiAgICBpZiAobGF6eV9jW3ZdID09IDAgJiYgbGF6eV9kW3ZdID09IDApIHJldHVybjsKICAgIGludCB0bSA9ICh0bCArIHRyKSAvIDI7CgogICAgbGwgbGMgPSBsYXp5X2Nbdl07CiAgICBsbCBsZCA9IGxhenlfZFt2XTsKCiAgICB0cmVlWzIgKiB2XSArPSAobGwpKHRtIC0gdGwgKyAxKSAqIGxjICsgbGQgKiBzdW1fcmFuZ2UodGwsIHRtKTsKICAgIGxhenlfY1syICogdl0gKz0gbGM7CiAgICBsYXp5X2RbMiAqIHZdICs9IGxkOwoKICAgIHRyZWVbMiAqIHYgKyAxXSArPSAobGwpKHRyIC0gdG0pICogbGMgKyBsZCAqIHN1bV9yYW5nZSh0bSArIDEsIHRyKTsKICAgIGxhenlfY1syICogdiArIDFdICs9IGxjOwogICAgbGF6eV9kWzIgKiB2ICsgMV0gKz0gbGQ7CgogICAgbGF6eV9jW3ZdID0gMDsKICAgIGxhenlfZFt2XSA9IDA7Cn0KCnZvaWQgdXBkYXRlKGludCB2LCBpbnQgdGwsIGludCB0ciwgaW50IGwsIGludCByLCBsbCBjLCBsbCBkKSB7CiAgICBpZiAobCA+IHIpIHJldHVybjsKICAgIGlmIChsID09IHRsICYmIHIgPT0gdHIpIHsKICAgICAgICB0cmVlW3ZdICs9IChsbCkodHIgLSB0bCArIDEpICogYyArIGQgKiBzdW1fcmFuZ2UodGwsIHRyKTsKICAgICAgICBsYXp5X2Nbdl0gKz0gYzsKICAgICAgICBsYXp5X2Rbdl0gKz0gZDsKICAgIH0gZWxzZSB7CiAgICAgICAgcHVzaCh2LCB0bCwgdHIpOwogICAgICAgIGludCB0bSA9ICh0bCArIHRyKSAvIDI7CiAgICAgICAgdXBkYXRlKDIgKiB2LCB0bCwgdG0sIGwsIG1pbihyLCB0bSksIGMsIGQpOwogICAgICAgIHVwZGF0ZSgyICogdiArIDEsIHRtICsgMSwgdHIsIG1heChsLCB0bSArIDEpLCByLCBjLCBkKTsKICAgICAgICB0cmVlW3ZdID0gdHJlZVsyICogdl0gKyB0cmVlWzIgKiB2ICsgMV07CiAgICB9Cn0KCmxsIHF1ZXJ5KGludCB2LCBpbnQgdGwsIGludCB0ciwgaW50IGwsIGludCByKSB7CiAgICBpZiAobCA+IHIpIHJldHVybiAwOwogICAgaWYgKGwgPT0gdGwgJiYgciA9PSB0cikgcmV0dXJuIHRyZWVbdl07CiAgICBwdXNoKHYsIHRsLCB0cik7CiAgICBpbnQgdG0gPSAodGwgKyB0cikgLyAyOwogICAgcmV0dXJuIHF1ZXJ5KDIgKiB2LCB0bCwgdG0sIGwsIG1pbihyLCB0bSkpICsgcXVlcnkoMiAqIHYgKyAxLCB0bSArIDEsIHRyLCBtYXgobCwgdG0gKyAxKSwgcik7Cn0KCmludCBtYWluKCkgewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKE5VTEwpOwoKICAgIGludCBuLCBtOwogICAgaWYgKCEoY2luID4+IG4gPj4gbSkpIHJldHVybiAwOwoKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbTsgKytpKSB7CiAgICAgICAgY2hhciB0eXBlOwogICAgICAgIGNpbiA+PiB0eXBlOwogICAgICAgIGlmICh0eXBlID09ICdQJykgewogICAgICAgICAgICBpbnQgeCwgcywgYTsKICAgICAgICAgICAgY2luID4+IHggPj4gcyA+PiBhOwogICAgICAgICAgICBhY3RpdmVfbWFzdHNbeF0gPSB7cywgYX07CiAgICAgICAgICAgIGludCBrID0gKHMgLSAxKSAvIGE7CiAgICAgICAgICAgIGludCBMbSA9IG1heCgxLCB4IC0gayk7CiAgICAgICAgICAgIGludCBSbSA9IG1pbihuLCB4ICsgayk7CiAgICAgICAgICAgIHVwZGF0ZSgxLCAxLCBuLCBMbSwgeCwgKGxsKXMgLSAobGwpYSAqIHgsIChsbClhKTsKICAgICAgICAgICAgdXBkYXRlKDEsIDEsIG4sIHggKyAxLCBSbSwgKGxsKXMgKyAobGwpYSAqIHgsIC0obGwpYSk7CiAgICAgICAgfSBlbHNlIGlmICh0eXBlID09ICdVJykgewogICAgICAgICAgICBpbnQgeDsKICAgICAgICAgICAgY2luID4+IHg7CiAgICAgICAgICAgIGludCBzID0gYWN0aXZlX21hc3RzW3hdLnM7CiAgICAgICAgICAgIGludCBhID0gYWN0aXZlX21hc3RzW3hdLmE7CiAgICAgICAgICAgIGludCBrID0gKHMgLSAxKSAvIGE7CiAgICAgICAgICAgIGludCBMbSA9IG1heCgxLCB4IC0gayk7CiAgICAgICAgICAgIGludCBSbSA9IG1pbihuLCB4ICsgayk7CiAgICAgICAgICAgIHVwZGF0ZSgxLCAxLCBuLCBMbSwgeCwgLSgobGwpcyAtIChsbClhICogeCksIC0obGwpYSk7CiAgICAgICAgICAgIHVwZGF0ZSgxLCAxLCBuLCB4ICsgMSwgUm0sIC0oKGxsKXMgKyAobGwpYSAqIHgpLCAobGwpYSk7CiAgICAgICAgfSBlbHNlIGlmICh0eXBlID09ICdaJykgewogICAgICAgICAgICBpbnQgeDEsIHgyOwogICAgICAgICAgICBjaW4gPj4geDEgPj4geDI7CiAgICAgICAgICAgIGxsIHRvdGFsX3N1bSA9IHF1ZXJ5KDEsIDEsIG4sIHgxLCB4Mik7CiAgICAgICAgICAgIGxsIGNvdW50ID0gKGxsKXgyIC0geDEgKyAxOwogICAgICAgICAgICBjb3V0IDw8IHRvdGFsX3N1bSAvIGNvdW50IDw8ICJcbiI7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAwOwp9