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