#include <fstream>
using namespace std;
int arbint[60055], s, n, m, i, a, b, c;
void update(int st, int dr, int poz, int val, int niv)
{
if(st==dr)
{
arbint[niv]+=val;
return;
}
int mij;
mij=(st+dr)/2;
if(poz<=mij)
update(st, mij, poz, val, 2*niv);
if(poz>mij)
update(mij+1, dr, poz, val, 2*niv+1);
arbint[niv]=arbint[2*niv]+arbint[2*niv+1];
}
void query(int st, int dr, int sti, int dri, int niv)
{
if(sti<=st && dr<=dri)
{
s=s+arbint[niv];
return;
}
int mij;
mij=(st+dr)/2;
if(sti<=mij)
query(st, mij, sti, dri, 2*niv);
if(dri>mij)
query(mij+1, dr, sti, dri, 2*niv+1);
}
int main()
{
ifstream f("datorii.in");
ofstream g("datorii.out");
f>>n>>m;
for(i=1; i<=n; i++)
{
f>>a;
update(1, n, i, a, 1);
}
for(i=1; i<=m; i++)
{
f>>a>>b>>c;
if(a==0)
{
update(1, n, b, -c, 1);
}
if(a==1)
{
s=0;
query(1, n, b, c, 1);
g<<s<<"\n";
}
}
}