#include <bits/stdc++.h>
#define int long long
#define dim 100009
#define mod 1000000007
using namespace std;
ifstream fin ("datorii.in");
ofstream fout("datorii.out");
int n,m,aint[4*dim];
int join (int x, int y)
{
int z=x+y;
return z;
}
void update (int nod,int st,int dr,int poz,int val)
{
if (st==dr)
{
aint[nod]+=val;
return;
}
int mij=(st+dr)/2;
if (poz<=mij)
update(2*nod,st,mij,poz,val);
else update(2*nod+1,mij+1,dr,poz,val);
aint[nod]=join(aint[2*nod],aint[2*nod+1]);
}
void update (int x,int y)
{
update(1,1,n,x,y);
}
int query (int nod,int st,int dr,int ql,int qr)
{
if (qr<st || dr<ql)
return 0;
if (st==ql && dr==qr)
return aint[nod];
int mij=(st+dr)/2;
if (qr<=mij)
return query (2*nod,st,mij,ql,qr);
else if (mij+1<=ql)
return query(2*nod+1,mij+1,dr,ql,qr);
else return join(query(2*nod,st,mij,ql,mij),query(2*nod+1,mij+1,dr,mij+1,qr));
}
int query (int x,int y)
{
return query(1,1,n,x,y);
}
int32_t main()
{
fin>>n>>m;
int op,x,y;
for (int i=1; i<=n; i++)
{
fin>>x;
update(i,x);
}
while (m--)
{
fin>>op>>x>>y;
if (op==0)
update(x,-y);
else fout<<query(x,y)<<'\n';
}
return 0;
}