#include<stdio.h>
int n,a[15002],m[60100];
int k1,k2,k3,mm,i;
int inita(int nod, int b, int e)
{
if (b==e) m[nod]=a[b];
else
{
inita(2*nod,b,(b+e)/2);
inita(2*nod+1,(b+e)/2+1,e);
m[nod]=m[2*nod]+m[2*nod+1];
}
}
int query(int nod,int b,int e,int s,int d)
{
int sums,sumd;
if (d<b||s>e) return 0;
if (s<=b&&e<=d) return m[nod];
else
{
// if (s<=(b+e)/2)
sums=query(2*nod,b,(b+e)/2,s,d);
// if (d>(b+e)/2)
sumd=query(2*nod+1,(b+e)/2+1,e,s,d);
return sums+sumd;
}
return 0;
}
int Update(int nod,int b,int e)
{
if (b==e) m[nod]=a[b];
else
{
if (k2<=(b+e)/2) Update(2*nod,b,(b+e)/2);
else Update(2*nod+1,(b+e)/2+1,e);
m[nod]=m[2*nod]+m[2*nod+1];
}
return 0;
}
int main()
{
freopen("datorii.in","r",stdin);
freopen("datorii.out","w",stdout);
scanf("%ld %ld",&n,&mm);
for(i=1;i<=n;i++)
scanf("%ld",&a[i]);
inita(1,1,n);
for(i=1;i<=mm;i++)
{
scanf("%ld %ld %ld",&k1,&k2,&k3);
if (!k1) {a[k2]-=k3;Update(1,1,n);}
if (k1) printf("%ld\n",query(1,1,n,k2,k3));
}
return 0;
}
#include<stdio.h>
int n,a[15002],m[60100];
int k1,k2,k3,mm,i;
int inita(int nod, int b, int e)
{
if (b==e) m[nod]=a[b];
else
{
inita(2*nod,b,(b+e)/2);
inita(2*nod+1,(b+e)/2+1,e);
m[nod]=m[2*nod]+m[2*nod+1];
}
}
int query(int nod,int b,int e,int s,int d)
{
int sums,sumd;
if (d<b||s>e) return 0;
if (s<=b&&e<=d) return m[nod];
else
{
// if (s<=(b+e)/2)
sums=query(2*nod,b,(b+e)/2,s,d);
// if (d>(b+e)/2)
sumd=query(2*nod+1,(b+e)/2+1,e,s,d);
return sums+sumd;
}
return 0;
}
int Update(int nod,int b,int e)
{
if (b==e) m[nod]=a[b];
else
{
if (k2<=(b+e)/2) Update(2*nod,b,(b+e)/2);
else Update(2*nod+1,(b+e)/2+1,e);
m[nod]=m[2*nod]+m[2*nod+1];
}
return 0;
}
int main()
{
freopen("datorii.in","r",stdin);
freopen("datorii.out","w",stdout);
scanf("%ld %ld",&n,&mm);
for(i=1;i<=n;i++)
scanf("%ld",&a[i]);
inita(1,1,n);
for(i=1;i<=mm;i++)
{
scanf("%ld %ld %ld",&k1,&k2,&k3);
if (!k1) {a[k2]-=k3;Update(1,1,n);}
if (k1) printf("%ld\n",query(1,1,n,k2,k3));
}
return 0;
}