//Hongjun Jang
#include <stdio.h>
#include <algorithm>
using namespace std;
#define MN 100005
typedef long long ll;
int n, m, bn;
ll x[MN], y[4 * MN], z[4 * MN];
void upd(int p, ll q) {
int i = p;
if (p > bn + 1) return;
p += bn;
while (p) {
y[p] += q; z[p] += i*q;
p /= 2;
}
}
ll sum(int N) {
int L = bn + 1, R = bn + N;
ll ret = 0;
while (L <= R) {
if (L == R) {
ret += (N + 1)*y[L] - z[L];
break;
}
if (L & 1) ret += (N + 1)*y[L] - z[L];
if (!(R & 1)) ret += (N + 1)*y[R] - z[R];
L = (L + 1) / 2;
R = (R - 1) / 2;
}
return ret;
}
int main() {
scanf("%d%d", &n, &m);
bn = 1; while (bn < n) bn *= 2; bn--;
for (int i = 1; i <= n; i++) {
scanf("%lld", &x[i]);
upd(i, x[i] - x[i - 1]);
}
int p, l, r;
char q;
for (int i = 1; i <= m; i++) {
scanf(" %c", &q);
if (q == 'Q') {
scanf("%d%d", &l, &r);
if (l > r) swap(l, r);
printf("%lld\n", sum(r) - sum(l - 1));
}
else {
scanf("%d%d%d", &l, &r, &p);
if (l > r) swap(l, r);
upd(l, p); upd(r + 1, -p);
}
}
}
Ly9Ib25nanVuIEphbmcKI2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxhbGdvcml0aG0+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgTU4gMTAwMDA1CnR5cGVkZWYgbG9uZyBsb25nIGxsOwppbnQgbiwgbSwgYm47CmxsIHhbTU5dLCB5WzQgKiBNTl0sIHpbNCAqIE1OXTsKdm9pZCB1cGQoaW50IHAsIGxsIHEpIHsKCWludCBpID0gcDsKCWlmIChwID4gYm4gKyAxKSByZXR1cm47CglwICs9IGJuOwoJd2hpbGUgKHApIHsKCQl5W3BdICs9IHE7IHpbcF0gKz0gaSpxOwoJCXAgLz0gMjsKCX0KfQpsbCBzdW0oaW50IE4pIHsKCWludCBMID0gYm4gKyAxLCBSID0gYm4gKyBOOwoJbGwgcmV0ID0gMDsKCXdoaWxlIChMIDw9IFIpIHsKCQlpZiAoTCA9PSBSKSB7CgkJCXJldCArPSAoTiArIDEpKnlbTF0gLSB6W0xdOwoJCQlicmVhazsKCQl9CgkJaWYgKEwgJiAxKSByZXQgKz0gKE4gKyAxKSp5W0xdIC0geltMXTsKCQlpZiAoIShSICYgMSkpIHJldCArPSAoTiArIDEpKnlbUl0gLSB6W1JdOwoJCUwgPSAoTCArIDEpIC8gMjsKCQlSID0gKFIgLSAxKSAvIDI7Cgl9CglyZXR1cm4gcmV0Owp9CmludCBtYWluKCkgewoJc2NhbmYoIiVkJWQiLCAmbiwgJm0pOwoJYm4gPSAxOyB3aGlsZSAoYm4gPCBuKSBibiAqPSAyOyBibi0tOwoJZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSB7CgkJc2NhbmYoIiVsbGQiLCAmeFtpXSk7CgkJdXBkKGksIHhbaV0gLSB4W2kgLSAxXSk7Cgl9CglpbnQgcCwgbCwgcjsKCWNoYXIgcTsKCWZvciAoaW50IGkgPSAxOyBpIDw9IG07IGkrKykgewoJCXNjYW5mKCIgJWMiLCAmcSk7CgkJaWYgKHEgPT0gJ1EnKSB7CgkJCXNjYW5mKCIlZCVkIiwgJmwsICZyKTsKCQkJaWYgKGwgPiByKSBzd2FwKGwsIHIpOwoJCQlwcmludGYoIiVsbGRcbiIsIHN1bShyKSAtIHN1bShsIC0gMSkpOwoJCX0KCQllbHNlIHsKCQkJc2NhbmYoIiVkJWQlZCIsICZsLCAmciwgJnApOwoJCQlpZiAobCA+IHIpIHN3YXAobCwgcik7CgkJCXVwZChsLCBwKTsgdXBkKHIgKyAxLCAtcCk7CgkJfQoJfQp9