#include <stdio.h>
#define Nmax 4*15000 + 1
long dat[Nmax];
long n,m,x,type,i,a,b,val;
void update(long,long,long,long,long);
long sum(long,long,long,long,long);
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",&x);
update(1,1,n,i,-x);
}
for (i=1;i<=m;i++)
{
scanf("%ld %ld %ld", &type, &a, &b);
if (type)
{
val = sum(1,1,n,a,b);
printf("%ld\n", val);
}
else
{
update(1,1,n,a,b);
}
}
return 0;
}
void update(long csucs, long e, long v, long a, long b)
{
long k = (e+v)/2;
dat[csucs] -= b;
if (a>k && e!=v)
update(2*csucs + 1, k+1, v, a, b);
else if (e!=v)
update (2*csucs, e, k, a, b);
}
long sum(long csucs, long e, long v, long a , long b)
{
long k = (e+v)/2;
long m1=0, m2=0;
if (a<=e && b>=v)
return dat[csucs];
else
{
if (a<=k)
m1 = sum(2*csucs, e, k, a, b);
if (b>k)
m2 = sum(2*csucs+1,k+1,v,a,b);
return m1 + m2;
}
return 0;
}