#include <cstdio>
#include <algorithm>
#include <vector>
using namespace std;
vector<int> a;
int m,n,x,y,q,i;
void adaug (int nod, int st, int dr, int pz, int val)
{
if (st == dr) a.at(nod) += val;
else
{
int m;
m = (st + dr)/2;
if (pz<=m) adaug (2*nod,st,m,pz,val);
else adaug (2*nod+1,m+1,dr,pz,val);
a.at(nod) = a.at(2*nod) + a.at(2*nod+1);
}
}
int raspunde (int nod, int st, int dr, int lim_inf, int lim_sup)
{
if (lim_inf<=st && lim_sup>=dr) return a.at(nod);
else
{
int m,p1,p2;
p1=p2=0;
m = (st+dr)/2;
if (lim_inf <=m) p1 = raspunde(2*nod,st,m,lim_inf,lim_sup);
if (lim_sup >m) p2 = raspunde(2*nod+1,m+1,dr,lim_inf,lim_sup);
return (p1+p2);
}
}
int main()
{
freopen("datorii.in","r",stdin);
freopen("datorii.out","w",stdout);
scanf ("%d %d",&n,&m);
a.resize(4*n+2,0);
for (i=1; i<=n; i++)
{
scanf ("%d",&x);
adaug (1,1,n,i,x);
}
for (i=1; i<=m; i++)
{
scanf ("%d %d %d",&q,&x,&y);
if (!q) adaug(1,1,n,x,-y);
else printf ("%d\n",raspunde(1,1,n,x,y));
}
return 0;
}