#include <iostream>
#include <string>
#define FIN "datorii.in"
#define FOUT "datorii.out"
#define MAX_N 15000
using namespace std;
int n,m;
int v[4*MAX_N+66],sum;
void add(int,int,int,int,int);
void query(int,int,int,int,int);
void iofile(void){
freopen(FIN,"rt",stdin);
freopen(FOUT,"wt",stdout);
scanf("%d%d",&n,&m);
for (int i=1,x;i<=n;i++){
scanf("%d",&x);
add(1,1,n,i,x);
}
}
void solve(void){
for (int i=1,t,a,b;i<=m;i++){
scanf("%d%d%d",&t,&a,&b);
if (t){
sum=0;
query(1,1,n,a,b);
printf("%d\n",sum);
} else{
add(1,1,n,a,-b);
}
}
fclose(stdout);
}
int main(void){
iofile();
solve();
return 0;
}
void add(int nod,int p,int u,int poz,int s){
v[nod]+=s;
if (p<u){
int m=(p+u)/2;
if (poz<=m){
add(2*nod,p,m,poz,s);
} else {
add(2*nod+1,m+1,u,poz,s);
}
}
}
void query(int nod,int p,int u,int a,int b){
if (a<=p && u<=b){
sum+=v[nod];} else {
int m=(p+u)/2;
if (a<=m){
query(nod*2,p,m,a,b);
}
if (b>m){
query(nod*2+1,m+1,u,a,b);
}
}
}