#include <bits/stdc++.h>
using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
int n,q,i,v[20000],a[70000],x,y,z;
void build(int nod, int st, int dr)
{
if(st==dr)a[nod]=v[st];
else {
int m=st+(dr-st)/2;
build(nod*2,st,m);
build(nod*2+1,m+1,dr);
a[nod]=a[nod*2]+a[nod*2+1];
}
}
void update(int nod, int st, int dr, int poz, int val)
{
if(st==dr)
{
a[nod]-=val;
v[st]-=val;
}
else {
int m=st+(dr-st)/2;
a[nod]-=val;
if(poz<=m)update(nod*2,st,m,poz,val);
else update(nod*2,m+1,dr,poz,val);
}
}
int getsum(int nod, int st, int dr, int gs, int gd)
{
int s1=0,s2=0,m=st+(dr-st)/2;
if(gs<=st&&dr<=gd)return a[nod];
if(gs<=m)s1=getsum(nod*2,st,m,gs,gd);
if(m<gd)s2=getsum(nod*2+1,m+1,dr,gs,gd);
return s1+s2;
}
int main()
{
fin>>n>>q;
for(i=1;i<=n;i++)fin>>v[i];
build(1,1,n);
while(q--)
{
fin>>x>>y>>z;
if(!x)update(1,1,n,y,z);
else fout<<getsum(1,1,n,y,z)<<'\n';
}
return 0;
}