#include <stdio.h>
#define mx 60010
long n,a,b,c,i,m,s;
long ai[mx];
void add(long nod, long p, long u, long poz, long val)
{
long m;
if (p==u)
ai[nod]=ai[nod]+val;
else
{
m=(p+u)/2;
if (poz<=m)
add(2*nod,p,m,poz,val);
if (m<poz)
add(2*nod+1,m+1,u,poz,val);
ai[nod]=ai[2*nod]+ai[2*nod+1];
}
}
void query(long nod, long p, long u)
{
long m;
if (a<=p && u<=b)
{
s+=ai[nod];
return;
}
if (p<u)
{
m=(p+u)/2;
if (a<=m)
query(2*nod,p,m);
if (m<b)
query(2*nod+1,m+1,u);
}
}
int main()
{
freopen("datorii.in","r",stdin);
freopen("datorii.out","w",stdout);
scanf("%ld %ld",&n,&m);
for (i=1; i<=n; i++)
{
scanf("%ld",&a);
add(1,1,n,i,a);
}
for (i=1; i<=m; i++)
{
scanf("%ld %ld %ld",&c,&a,&b);
if (c==0)
add(1,1,n,a,-b);
else
{
s=0;
query(1,1,n);
printf("%ld\n",s);
}
}
fclose(stdin);
fclose(stdout);
return 0;
}