//我感觉思路应该没问题,和题解一样,但就是WA..
#include<cstdio>
#include<iostream>
using namespace std;
typedef long long ll;
const ll MAX_SIZE = 1e5 + 10;
ll bit[MAX_SIZE], bits[MAX_SIZE];
int n, m;
int a[MAX_SIZE], sum[MAX_SIZE];
int lowbit(int x) {
return x & -x;
}
void add(ll bit[], int x, int y) {
while (x <= n) {
bit[x] += y;
x += lowbit(x);
}
}
ll ask(ll bit[], int x) {
ll ans = 0;
while (x) {
ans += bit[x];
x -= lowbit(x);
}
return ans;
}
void add_interval(int l, int k) {
add(bit, l, k);
add(bits, l, (l - 1) * k);
}
ll query(int x) {
return ask(bit, x) * x - ask(bits, x);
}
ll query_interval(int l, int r) {
return query(r) - query(l - 1);
}
int main() {
scanf("%d %d", &n, &m);
for (int i = 1; i <= n; i++) {
scanf("%d", &a[i]);
sum[i] = a[i] + sum[i - 1];
add_interval(i,a[i]);
}
while (m--) {
char c[10];
getchar();
scanf("%s", &c);
if (c[0] == 'M') {
int l, k;
scanf("%d %d", &l, &k);
add_interval(l, k - a[l]);
a[l] = k;
}
else {
int top;
scanf("%d", &top);
ll ans = query_interval(1, top);
printf("%lld\n", ans);
}
}
return 0;
}