#include <stdio.h> //士兵杀敌(二)
#define MAX 1000000
int num[MAX];
int segtree[2100000];
void build(int node,int begin,int end)
{
if(begin==end)
{
segtree[node]=num[begin];
}else
{
build(2*node,begin,(begin+end)/2);
build(2*node+1,(begin+end)/2+1,end);
segtree[node]=segtree[2*node]+segtree[2*node+1];
}
}
int query(int node,int begin,int end,int left,int right)//left right为此次所查询的区间
{
int p1,p2;
if(right<begin||end<left)
return 0;
if(begin>=left&&end<=right)
return segtree[node];
p1=query(2*node,begin,(begin+end)/2,left,right);
p2=query(2*node+1,(begin+end)/2+1,end,left,right);
return p2+p1;
}
void updata(int node,int begin,int end,int ind,int add)
{
if(begin==end)
{
segtree[node]+=add;
return;
}
if(ind<=(begin+end)/2)
{
updata(2*node,begin,(begin+end)/2,ind,add);
}
else
{
updata(2*node+1,(begin+end)/2+1,end,ind,add);
}
segtree[node]=segtree[2*node]+segtree[2*node+1];;
}
int main()
{
int n,m;
scanf("%d%d",&n,&m);
for(int i=0;i<n;i++)
{
scanf("%d",&num[i]);
}
int a,b;
build(1,0,n-1);
while(m--)
{
char ch[6];
scanf("%s",&ch);
scanf("%d%d",&a,&b);
if(ch[0]=='Q')
printf("%d\n",query(1,0,n-1,a-1,b-1));
else
updata(1,0,n-1,a-1,b);
}
return 0;
}