#include <bits/stdc++.h>
#define NMax 15002
using namespace std;
ifstream f("datorii.in");
ofstream g("datorii.out");
int n,m,p,x,y,sol;
int a[NMax],TR[4*NMax];
void update(int nod,int st,int dr,int a,int b,int v){
if(a <= st && dr <= b){
TR[nod] = v;
}else{
int mij = (st + dr) / 2;
if(a <= mij){
update(2 * nod, st, mij, a, b, v);
}
if(b > mij){
update(2 * nod + 1, mij + 1, dr, a, b,v);
}
TR[nod] = TR[2 * nod] + TR[2 * nod + 1];
}
}
void inter(int nod,int st,int dr,int a,int b){
if(a <= st && dr <= b){
sol += TR[nod];
}else{
int mij = (st + dr) / 2;
if(a <= mij){
inter(2 * nod, st, mij, a, b);
}
if(b > mij){
inter(2 * nod + 1, mij + 1, dr, a, b);
}
}
}
int main()
{
f >> n >> m;
for(int i = 1; i <= n; ++i){
f >> a[i];
update(1,1,n,i,i,a[i]);
}
for(int i = 1; i <= m; ++i){
f >> p >> x >> y;
if(p == 1){
sol = 0;
inter(1,1,n,x,y);
g << sol << '\n';
}else{
a[x] -= y;
update(1,1,n,x,x,a[x]);
}
}
return 0;
}
/*#include <iostream>
#include <fstream>
using namespace std;
ifstream f("datorii.in");
ofstream g("datorii.out");
#define MAXN 15000
int N,M;
int Arb[MAXN]={};
int val, poz, suma=0, start, stop;
int lsb(int arg)
{
return arg&(-arg);
}
void update(int pozitia, int valoare)
{
while(pozitia<=N)
{
Arb[pozitia]+=valoare;
pozitia+=lsb(pozitia);
}
}
int query(int pozitia)
{
int ans=0;
while(pozitia)
{
ans+=Arb[pozitia];
pozitia-=lsb(pozitia);
}
return ans;
}
int query(int a, int b) {
return query(b)-query(a-1);
}
void afisare_arbust()
{
for(int i=1; i<=20; ++i)
{
cout<<Arb[i]<<" ";
}
cout<<"\n";
}
void updatte(int n, int st, int dr)
{
if(st==dr)
{
Arb[n]+=val;
return;
}
else
{
int m=(st+dr)/2;
if(poz<=m)
updatte(2*n, st, m);
else
updatte(2*n+1,m+1,dr);
Arb[n]=Arb[2*n]+Arb[2*n+1];
}
}
int querry(int x, int st, int dr)
{
if(start<=st && dr<=stop)
{
return Arb[x];
}
int m=(st+dr)/2, mid=(start+stop)/2;
if(st<=mid && mid<dr) return querry(2*x,st,mid)+querry(2*x+1, mid+1, dr);
if(start<=m) return querry(2*x,st,m);
if(m<stop) return querry(2*x+1, m+1, dr);
}
int main()
{
f>>N>>M;
int x,a,b;
for(int i=1; i<=N; ++i)
{
f>>x;
poz=i;
val=x;
//updatte(1,1,N);
update(i,x);
//afisare_arbust();
}
for(int i=1; i<=M; ++i)
{
f>>x>>a>>b;
if(x==1)
{
suma=0;
start=a;
stop=b;
//g<<querry(1,1,N);
g<<query(a,b);
g<<"\n";
}
else
{
poz=a;
val=-b;
//updatte(1,1,N);
update(a,-b);
}
}
return 0;
}
*/