#include <fstream>
#define NMAX 15005
using namespace std;
ifstream f("datorii.in");
ofstream g("datorii.out");
int arb[100000], n, m, i, b, caz, a, v[NMAX];
void update(const int &st, const int &dr, const int &poz, const int &nod, const int &val)
{
if(st==dr)
{
arb[nod] = val;
return;
}
int mid = (st+dr)/2;
if(mid>=poz)
update(st,mid,poz,(nod<<1),val);
if(mid<poz)
update(st,mid,poz,(nod<<1)+1,val);
arb[nod] = arb[(nod<<1)+1] + arb[(nod<<1)];
}
int querry(const int &st1, const int &dr1, const int &st2, const int &dr2, const int &nod)
{
if(st1 == st2 && dr1 == dr2)
return arb[nod];
int mid = (st1+dr1)/2;
if(mid>=dr2)
return querry(st1, mid, st2, dr2, (nod<<1));
if(mid<st2)
return querry(mid+1, dr1, st2, dr2, (nod<<1)+1);
return (querry(st1,mid,st2,mid,(nod<<1)) + querry(mid+1, dr1, mid+1, dr2, (nod<<1)+1));
}
int main()
{
f>>n>>m;
for(i=1;i<=n;i++)
{
f>>v[i];
update(1,n,i,1,v[i]);
}
//for(i=1;i<=50;i++)
//g<<arb[i]<<" ";
for(i=1;i<=m;i++)
{
f>>caz;
f>>a>>b;
if(!caz)
{
v[a]-=b;
update(1,n,a,1,v[a]);
}
else
g<<querry(1,n,a,b,1)<<"\n";
}
}