/**
插线问点。如此牛叉经典的解法,现在才学会
****/
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
int num[1000009];
int lowbit(int x)
{
return x & (-x);
}
int sum (int x)
{
int t = 0;
while(x>0)
{
t += num[x];
x -= lowbit(x);
}
return t;
}
void add(int x,int val,int n)
{
while(x<=n)
{
num[x] += val;
x += lowbit(x);
}
}
int main()
{
int n,m,x,y,val;
char a[100];
while(~scanf("%d%d",&n,&m))
{
while(n--)
{
scanf("%s",&a);
if(a[0]=='A')
{
scanf("%d%d%d",&x,&y,&val);
add(x,val,m);
add(y+1,-val,m);
}
else
{
scanf("%d",&val);
printf("%d\n",sum(val));
}
}
}
}
/***
插dian问线
****/
#include<stdio.h>
#include<string.h>
int num[1000009];
int lobit(int x)
{
return x&-x;
}
int N;
void upsite(int x,int y)
{
while(x<=N)
{
num[x]+=y;
x+=lobit(x);
}
}
int sum(int x)
{
int t=0;
while(x>0)
{
t+=num[x];
x-=lobit(x);
}
return t;
}
int main()
{
int n,m,beg,c,b;
char a[100];
while(scanf("%d%d",&N,&n)!=EOF)
{
for(int i=1;i<=N;i++)
{
scanf("%d",&beg);
upsite(i,beg);
}
for(int i=1;i<=n;i++)
{
scanf("%s",a);
scanf("%d%d",&b,&c);
if(a[0]=='Q')
{
printf("%d\n",sum(c)-sum(b-1));
}
else
upsite(b,c);
}
}
}