#include<bits/stdc++.h>
#define lid (id << 1)
#define rid (id << 1 | 1)
using namespace std;
char buf[1 << 20],*p1,*p2;
#define getc() (p1 == p2 && (p2 = (p1 = buf) + fread(buf,1,1<<20,stdin),p1 == p2)?0:*p1++)
int read(){
int x = 0,w = 1;
char c = 0;
while(c < '0' || c > '9'){
if(c == '-')w = -1;
c = getc();
}
while(c <= '9' && c >= '0'){
x = (x << 1) + (x << 3) + (c ^ 48);
c = getc();
}
return x * w;
}
inline void print(register long long x){
if(x < 0){
x = -x;
putchar('-');
}
if(x > 9)print(x / 10);
putchar(x % 10 + 48);
}
struct segmt{
int id,l,r;
int lazy,sum;
}tr[5000005];
int a[5000005];
int sum[5000005];
int n,m;
void pushup(int id){
tr[id].sum = tr[lid].sum + tr[rid].sum;
}
void pushdown(int id,int l,int r){
if(tr[id].lazy){
int mid = (l + r) >> 1;
tr[lid].sum += tr[id].lazy * (mid - l + 1);
tr[rid].sum += tr[id].lazy * (r - mid);
tr[lid].lazy += tr[id].lazy;
tr[rid].lazy += tr[id].lazy;
tr[id].lazy = 0;
}
}
void bulid(int id,int l,int r){
if(l == r){
tr[id].sum = a[l];
return ;
}
int mid = (l + r) >> 1;
bulid(lid,l,mid);
bulid(rid,mid + 1,r);
pushup(id);
}
void change(int id,int l,int r,int val,int ll = 1,int rr = n){
if(ll >= l && rr <= r){
tr[id].sum += (rr - ll + 1) * val;
tr[id].lazy += val;
return ;
}
pushdown(id,ll,rr);
int mid = (ll + rr) >> 1;
if(l <= mid){
change(lid,l,r,val,ll,mid);
}
if(r > mid){
change(rid,l,r,val,mid + 1,rr);
}
pushup(id);
}
int querysum(int id,int l,int r,int ll = 1,int rr = n){
int ans = 0;
if(ll >= l && rr <= r){
return tr[id].sum;
}
pushdown(id,ll,rr);
int mid = (ll + rr) >> 1;
if(r <= mid){
ans += querysum(lid,l,r,ll,mid);
}
if(l > mid){
ans += querysum(rid,l,r,mid + 1,rr);
}
return ans;
}
signed main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin >> n >> m;
for(int i = 1;i <= n;++i){
cin >> a[i];
a[i] += a[i - 1];
}
bulid(1,1,n);
while(m--){
string oper;
register int x,y;
cin >> oper >> x;
if(oper == "Modify"){
cin >> y;
register int ax = 0;
if(x == 1)ax = querysum(1,1,1);
if(x == 2)ax = querysum(1,1,2) - (querysum(1,1,1) << 1);
else ax = querysum(1,1,x) + querysum(1,1,x - 2) - (querysum(1,1,x - 1) << 1);
change(1,x,n,y - ax);
}
else {
cout << querysum(1,1,x) << endl;
}
}
return 0;
}