#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 )
{
if(st==dr)
{
arb[nod]=v[poz];
return;
}
int sfiu = (nod<<1);
int dfiu = ((nod<<1)+1);
int mij = ((st+dr)>>1);
if(poz<=mij) update(st,mij,poz,sfiu);
if(poz>mij) update(mij+1,dr,poz,dfiu);
arb[nod] = arb[sfiu] + arb[dfiu];
}
int querry(const int &st, const int &dr, const int &st1, const int &dr1, const int &nod)
{
if(st==st1 && dr==dr1)
return arb[nod];
int sfiu=(nod<<1);
int dfiu=((nod<<1)+1);
int mij=((st+dr)>>1);
if(dr1<=mij)
return querry(st,mij,st1,dr1,sfiu);
if(st1>mij)
return querry(mij+1,dr,st1,dr1,dfiu);
return (querry(st,mij,st1,mij,sfiu) + querry(mij+1,dr,mij+1,dr1,dfiu));
}
int main()
{
f>>n>>m;
for(i=1;i<=n;i++)
{
f>>v[i];
update(1,n,i,1);
}
//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);
}
else
g<<querry(1,n,a,b,1)<<"\n";
}
}