#include "stdio.h"
#include "string.h"
#include "cstdio"
#include "cstdlib"
#include "cmath"
#include "iostream"
long long int tree[5000001]={0};
using namespace std;
inline long readLong()
{
char t;
long x=0;
t=getchar_unlocked();
while(t<48 || t>57)
t=getchar_unlocked();
x+=(t-'0');
t=getchar_unlocked();
while(t>=48 && t<=57)
{
x*=10;
x+=(t-'0');
t=getchar_unlocked();
}
return x;
}
inline int readInt()
{
char t;
int x=0;
t=getchar_unlocked();
while(t<48 || t>57)
t=getchar_unlocked();
x+=(t-'0');
t=getchar_unlocked();
while(t>=48 && t<=57)
{
x*=10;
x+=(t-'0');
t=getchar_unlocked();
}
return x;
}
inline void fastOutput(long long int n)
{
int i=21;
char output_buffer[22];
output_buffer[21]='\n';
do
{
output_buffer[--i]=(n%10)+'0';
n/=10;
}while(n);
do
{
putchar_unlocked(output_buffer[i]);
}while(++i<22);
}
void buildTree(int ar[],long Node,long a,long b)
{
if(a>b) // for cases where i,j are out of the required range
return;
if(a==b) // on reaching the leaf node
{
tree[Node]=ar[a]; // assigning value
return;
}
long mid = (a+b)/2;
buildTree(ar,(Node*2),a,mid); //divide into left half of tree
buildTree(ar,1+(Node*2),mid+1,b); //divide into right half of tree
tree[Node]=tree[(Node*2)]+tree[(Node*2)+1]; //storing sum of 2 child nodes into the parent node
}
// void update(int ar[],long long tree[],int value,long i,long j,long a,long b,long Node)
// {
// if(a>j || b<i || a>b )
// return;
// if(a==i && b==j )
// {
// tree[Node] +=value;
// return;
// }
// long mid = (a+b)/2;
// update(ar,tree,value,i,j,a,mid,(Node*2));
// update(ar,tree,value,i,j,mid+1,b,1+(Node*2));
// tree[Node]=tree[2*Node]+tree[(2*Node)+1];
// }
long long query(int ar[],long Node,long a,long b,long i,long j)
{
if(a>b || b<i || a>j )
return 0;
if(a>=i && b<=j )
return tree[Node];
long mid = (a+b)/2;
long long q1= query(ar,(Node*2),a,mid,i,j);
long long q2= query(ar,1+(Node*2),mid+1,b,i,j);
return (q1+q2);
}
int main()
{
long long n,q;
// scanf("%lld",&n);
// scanf("%lld",&q);
n=readLong();
q=readLong();
int a[n];
for (int i = 0; i <n; i++)
a[i]=readInt();
buildTree(a,1,0,(n-1));
for (int i = 0; i < q; i++)
{
char ch;
long l,r;
ch=getchar_unlocked();
while(1)//maybe there is some extra space in the input file...according to the comments on the problem page!!!!
{
if(ch=='S'||ch=='T'||ch=='G')
{
break;
}
ch=getchar_unlocked();
}
l=readLong();
r=readLong();
if(ch=='S')
{
printf("%lld\n", query(a,1,0,(n-1),l,r));
}
else if(ch=='G')
{
a[l]+=r;
buildTree(a,1,0,(n-1));
}
else
{
a[l]-=r;
buildTree(a,1,0,(n-1));
}
}
return 0;
}
I2luY2x1ZGUgInN0ZGlvLmgiCiNpbmNsdWRlICJzdHJpbmcuaCIKI2luY2x1ZGUgImNzdGRpbyIKI2luY2x1ZGUgImNzdGRsaWIiCiNpbmNsdWRlICJjbWF0aCIKI2luY2x1ZGUgImlvc3RyZWFtIgoKbG9uZyBsb25nIGludCB0cmVlWzUwMDAwMDFdPXswfTsKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCglpbmxpbmUgbG9uZyByZWFkTG9uZygpCgl7CgkJY2hhciB0OwoJCWxvbmcgeD0wOwoJCXQ9Z2V0Y2hhcl91bmxvY2tlZCgpOwoJCXdoaWxlKHQ8NDggfHwgdD41NykKCQkJdD1nZXRjaGFyX3VubG9ja2VkKCk7CgkJeCs9KHQtJzAnKTsKCQl0PWdldGNoYXJfdW5sb2NrZWQoKTsKCQl3aGlsZSh0Pj00OCAmJiB0PD01NykKCQl7CgkJCXgqPTEwOwoJCQl4Kz0odC0nMCcpOwoJCQl0PWdldGNoYXJfdW5sb2NrZWQoKTsKCQl9CgkJcmV0dXJuIHg7Cgl9IAoKCWlubGluZSBpbnQgcmVhZEludCgpCgl7CgkJY2hhciB0OwoJCWludCB4PTA7CgkJdD1nZXRjaGFyX3VubG9ja2VkKCk7CgkJd2hpbGUodDw0OCB8fCB0PjU3KQoJCQl0PWdldGNoYXJfdW5sb2NrZWQoKTsKCQl4Kz0odC0nMCcpOwoJCXQ9Z2V0Y2hhcl91bmxvY2tlZCgpOwoJCXdoaWxlKHQ+PTQ4ICYmIHQ8PTU3KQoJCXsKCQkJeCo9MTA7CgkJCXgrPSh0LScwJyk7CgkJCXQ9Z2V0Y2hhcl91bmxvY2tlZCgpOwoJCX0KCQlyZXR1cm4geDsKCX0gCgoKaW5saW5lIHZvaWQgZmFzdE91dHB1dChsb25nIGxvbmcgaW50IG4pCnsKCWludCBpPTIxOwoJY2hhciBvdXRwdXRfYnVmZmVyWzIyXTsKCW91dHB1dF9idWZmZXJbMjFdPSdcbic7CglkbwoJewoJCW91dHB1dF9idWZmZXJbLS1pXT0obiUxMCkrJzAnOwoJCW4vPTEwOwoJfXdoaWxlKG4pOwoJZG8KCXsKCQlwdXRjaGFyX3VubG9ja2VkKG91dHB1dF9idWZmZXJbaV0pOwoJfXdoaWxlKCsraTwyMik7Cn0KCgp2b2lkIGJ1aWxkVHJlZShpbnQgYXJbXSxsb25nIE5vZGUsbG9uZyBhLGxvbmcgYikKewoJaWYoYT5iKQkJCS8vIGZvciBjYXNlcyB3aGVyZSBpLGogYXJlIG91dCBvZiB0aGUgcmVxdWlyZWQgcmFuZ2UKCQlyZXR1cm47CglpZihhPT1iKQkJLy8gb24gcmVhY2hpbmcgdGhlIGxlYWYgbm9kZQoJCXsJCgkJCXRyZWVbTm9kZV09YXJbYV07CQkvLyBhc3NpZ25pbmcgdmFsdWUgCgkJCXJldHVybjsKCQl9Cglsb25nIG1pZCA9IChhK2IpLzI7CglidWlsZFRyZWUoYXIsKE5vZGUqMiksYSxtaWQpOwkJCS8vZGl2aWRlIGludG8gbGVmdCBoYWxmIG9mICB0cmVlCglidWlsZFRyZWUoYXIsMSsoTm9kZSoyKSxtaWQrMSxiKTsJCS8vZGl2aWRlIGludG8gcmlnaHQgaGFsZiBvZiB0cmVlCgl0cmVlW05vZGVdPXRyZWVbKE5vZGUqMildK3RyZWVbKE5vZGUqMikrMV07CS8vc3RvcmluZyBzdW0gb2YgMiBjaGlsZCBub2RlcyBpbnRvIHRoZSBwYXJlbnQgbm9kZQoKfQoKCi8vIHZvaWQgdXBkYXRlKGludCBhcltdLGxvbmcgbG9uZyB0cmVlW10saW50IHZhbHVlLGxvbmcgaSxsb25nIGosbG9uZyBhLGxvbmcgYixsb25nIE5vZGUpCi8vIHsKLy8gCWlmKGE+aiB8fCBiPGkgfHwgYT5iICkKLy8gCQlyZXR1cm47Ci8vIAlpZihhPT1pICYmIGI9PWogKQovLyAJCXsKLy8gCQkJdHJlZVtOb2RlXSArPXZhbHVlOwovLyAJCQlyZXR1cm47Ci8vIAkJfQoKLy8gCWxvbmcgbWlkID0gKGErYikvMjsKLy8gCXVwZGF0ZShhcix0cmVlLHZhbHVlLGksaixhLG1pZCwoTm9kZSoyKSk7Ci8vIAl1cGRhdGUoYXIsdHJlZSx2YWx1ZSxpLGosbWlkKzEsYiwxKyhOb2RlKjIpKTsKLy8gCXRyZWVbTm9kZV09dHJlZVsyKk5vZGVdK3RyZWVbKDIqTm9kZSkrMV07Ci8vIH0KCgpsb25nIGxvbmcgcXVlcnkoaW50IGFyW10sbG9uZyBOb2RlLGxvbmcgYSxsb25nIGIsbG9uZyBpLGxvbmcgaikKewoJaWYoYT5iIHx8IGI8aSB8fCBhPmogKQoJCXJldHVybiAwOwoJaWYoYT49aSAmJiBiPD1qICkKCQlyZXR1cm4gdHJlZVtOb2RlXTsKCWxvbmcgbWlkID0gKGErYikvMjsKCWxvbmcgbG9uZyBxMT0gcXVlcnkoYXIsKE5vZGUqMiksYSxtaWQsaSxqKTsKCWxvbmcgbG9uZyBxMj0gcXVlcnkoYXIsMSsoTm9kZSoyKSxtaWQrMSxiLGksaik7CglyZXR1cm4gKHExK3EyKTsKfQoKCmludCBtYWluKCkKewoJbG9uZyBsb25nIG4scTsKCS8vIHNjYW5mKCIlbGxkIiwmbik7CgkvLyBzY2FuZigiJWxsZCIsJnEpOwoJbj1yZWFkTG9uZygpOwoJcT1yZWFkTG9uZygpOwoJaW50IGFbbl07Cglmb3IgKGludCBpID0gMDsgaSA8bjsgaSsrKQoJCWFbaV09cmVhZEludCgpOwoJYnVpbGRUcmVlKGEsMSwwLChuLTEpKTsKCWZvciAoaW50IGkgPSAwOyBpIDwgcTsgaSsrKQoJewoJCWNoYXIgY2g7CgkJbG9uZyBsLHI7CgkJY2g9Z2V0Y2hhcl91bmxvY2tlZCgpOwogICAgCXdoaWxlKDEpLy9tYXliZSB0aGVyZSBpcyBzb21lIGV4dHJhIHNwYWNlIGluIHRoZSBpbnB1dCBmaWxlLi4uYWNjb3JkaW5nIHRvIHRoZSBjb21tZW50cyBvbiB0aGUgcHJvYmxlbSBwYWdlISEhIQogICAgCXsKICAgIAkJaWYoY2g9PSdTJ3x8Y2g9PSdUJ3x8Y2g9PSdHJykKICAgIAkJewogICAgCQkJYnJlYWs7CiAgICAJCX0KICAgIAkJY2g9Z2V0Y2hhcl91bmxvY2tlZCgpOwogICAgCX0KCQlsPXJlYWRMb25nKCk7CgkJcj1yZWFkTG9uZygpOwoJCWlmKGNoPT0nUycpCgkJewoJCQlwcmludGYoIiVsbGRcbiIsIHF1ZXJ5KGEsMSwwLChuLTEpLGwscikpOwoJCX0KCQllbHNlIGlmKGNoPT0nRycpCgkJewoJCQlhW2xdKz1yOwoJCQlidWlsZFRyZWUoYSwxLDAsKG4tMSkpOwoJCX0KCQllbHNlCgkJewoJCQlhW2xdLT1yOwoJCQlidWlsZFRyZWUoYSwxLDAsKG4tMSkpOwoJCX0KCgl9CglyZXR1cm4gMDsKfQo=