#define lowbit(x) x & (-x)
#include <cstdio>
#define ll long long
int n;
const int maxn = 1000005;
int a[maxn] = {0};
ll sum1[maxn], sum2[maxn];
int Q[5];
void updata(int i, int k) {
int x = i;
while(i <= n) {
sum1[i] += k;
sum2[i] += k * (x - 1);
i += lowbit(i);
}
}
ll getsum(int i) {
ll res = 0;
int x = i;
while(i > 0) {
res += x * sum1[i] - sum2[i];
i -= lowbit(i);
}
return res;
}
int main() {
int query;
scanf("%d%d", &n, &query);
for(int i = 1; i <= n; i++) {
scanf("%d", &a[i]);
updata(i, a[i] - a[i - 1]);
}
int a, b, c;
while(query--) {
scanf("%s%d%d", Q, &a, &b);
if(Q[0] == 'Q') printf("%lld\n", getsum(b) - getsum(a - 1));
else if(Q[0] == 'C') {
scanf("%d", &c);
updata(a, c);
updata(b + 1, c);
}
}
return 0;
}