#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define ls p << 1
#define rs p << 1 | 1
const int N = (int)5e5 + 5, M = (int)5e5;
int n, q, f[N];
ll a[N << 2], lazy[N << 2], tag[N << 2];
inline int read()
{
int s = 0, f = 0;
char ch = getchar();
while (ch < 48 || ch > 57)
{
if (ch == '-')
f = 1;
ch = getchar();
}
while (ch >= 48 && ch <= 57)
{
s = (s << 3) + (s << 1) + (ch ^ 48);
ch = getchar();
}
return f ? -s : s;
}
void pushup(int p)
{
a[p] = a[ls] + a[rs];
}
void pushdown(int p, int l, int r)
{
int mid = (l + r) >> 1;
if (tag[p] != 0)
{
tag[ls] = tag[rs] = tag[p];
a[ls] = tag[p] * (ll)(mid - l + 1);
a[rs] = tag[p] * (ll)(r - mid);
lazy[p] = tag[p] = 0;
}
if (lazy[p] != 0)
{
lazy[ls] += lazy[p];
lazy[rs] += lazy[p];
a[ls] += (ll)(mid - l + 1) * lazy[p];
a[rs] += (ll)(r - mid) * lazy[p];
lazy[p] = 0;
}
}
void build(int p, int l, int r)
{
if (l == r)
{
a[p] = f[l];
return;
}
int mid = (l + r) >> 1;
build(ls, l, mid);
build(rs, mid + 1, r);
pushup(p);
}
ll query(int p, int l, int r, int x, int y)
{
if (x <= l && r <= y)
{
return a[p];
}
pushdown(p, l, r);
int mid = (l + r) >> 1;
ll ans = 0;
if (x <= mid)
{
ans += query(ls, l, mid, x, y);
}
if (y > mid)
{
ans += query(rs, mid + 1, r, x, y);
}
return ans;
}
void update(int p, int l, int r, int x, int y, int k, int type)
{
if (x <= l && r <= y)
{
if (type)
{
tag[p] = k;
a[p] = (r - l + 1) * k;
lazy[p] = 0;
}
else
{
lazy[p] += k;
a[p] += (r - l + 1) * k;
}
return;
}
pushdown(p, l, r);
int mid = (l + r) >> 1;
if (x <= mid)
{
update(ls, l, mid, x, y, k, type);
}
if (y > mid)
{
update(rs, mid + 1, r, x, y, k, type);
}
pushup(p);
}
signed main()
{
// freopen("P4879.in", "r", stdin);
n = read(), q = read();
for (int i = 1; i <= n; ++i)
{
f[i] = read();
}
build(1, 1, M);
while (q--)
{
char ch;
cin >> ch;
int x, y;
if (ch == 'Q')
{
printf("%lld\n", query(1, 1, M, 1, M));
}
else if (ch == 'C')
{
x = read(), y = read();
update(1, 1, M, x, x, -y, 0);
}
else if (ch == 'I')
{
x = read(), y = read();
update(1, 1, M, x, x, y, 1);
}
else
{
x = read();
update(1, 1, M, x, x, 0, 1);
}
}
return 0;
}