#include<fstream.h>
int v[15002],vector[15002],a[15002];
int cst (int s, int d, int k)
{
if (s==d) { vector[s]=k;return a[k]=v[s];}
else return a[k]=cst(s,(d+s)/2,2*k)+cst((s+d)/2+1,d,2*k+1);
}
int sum(int s, int d, int li,int ld,int k)
{
if (li<=s && ld>=d) return a[k];
else if (ld<=(s+d)/2) return sum(s,(s+d)/2,li,ld,2*k);
else if (li>(s+d)/2) return sum((s+d)/2+1,d,li,ld,2*k+1);
else return sum(s,(s+d)/2,li,ld,2*k)+sum((s+d)/2+1,d,li,ld,2*k+1);
}
void scade (int val,int k)
{
while (k>=1)
{
a[k]-=val;
k/=2;
}
}
int main()
{
int n,m,i,j,k,A,val,t;
memset(a,sizeof(a),0);
ifstream f ("datorii.in");
f>>n>>m;
for (i=1;i<=n;i++)
f>>v[i];
cst(1,n,1);
ofstream g("datorii.out");
for (i=1;i<=m;i++)
{
f>>A>>t>>val;
if (A==0) scade(val,vector[t]);
else g<<sum(1,n,t,val,1)<<endl;
}
f.close();
g.close();
return 0;
}