#include <iostream>
#include <fstream>
using namespace std;
ifstream f("datorii.in");
ofstream g("datorii.out");
void pay(int nod,int st, int dr, int t, int v, int A[50005]){
if(st>t || dr<t){
return;
}
if(st==dr){
A[nod] += v;
return;
}
if(t<=(st+dr)/2){
pay(nod*2, st, (st+dr)/2, t, v, A);
}
else{
pay(nod*2+1, (st+dr)/2+1, dr, t, v, A);
}
A[nod]= A[2*nod]+A[2*nod+1];
}
int sumt(int nod,int st, int dr, int p, int q, int A[50005])
{
if(st>q || dr<p){
return 0;
}
if(p<=st && dr<=q){
return A[nod];
}
return sumt(nod*2, st, (st+dr)/2, p, q,A) + sumt(nod*2+1, (st+dr)/2+1, dr, p, q, A);
}
int main(){
int A[50005],n,m,b,t,v,a;
f>>n>>m;
for(int i=1;i<=n;i++){
f>>a;
pay(1,1,n,i,a,A);
}
for(int i=1; i<=m;i++)
{
f>>b>>t>>v;
if(b){g<<sumt(1,1,n,t,v,A)<<"\n";}
else{pay(1,1,n,t,-v,A);}
}
}