#include <bits/stdc++.h>
using namespace std;
ifstream f("datorii.in");
ofstream g("datorii.out");
int n,a[100002],i,j,sum,q,x,y,t;
struct node{
int suma;
}arb[400050];
void init (int nod,int st,int dr){
if (st==dr){
arb[nod].suma=a[st];
}
else {
int mid=(st+dr)/2;
init(nod*2,st,mid);
init(nod*2+1,mid+1,dr);
arb[nod].suma=arb[nod*2].suma+arb[nod*2+1].suma;
}
}
void querry (int nod,int st ,int dr,int a,int b){
if (a<=st&&dr<=b){
sum+=arb[nod].suma;
}
else{
int mid=(st+dr)/2;
if (a<=mid){
querry(nod*2,st,mid,a,b);
}
if (b>mid){
querry(nod*2+1,mid+1,dr,a,b);
}
}
}
void update (int nod,int st,int dr,int poz,int x){
if (st==dr){
arb[nod].suma-=x;
a[poz]-=x;
}
else {
int mid=(st+dr)/2;
if(poz<=mid){
update(nod*2,st,mid,poz,x);
}
else{
update(nod*2+1,mid+1,dr,poz,x);
}
arb[nod].suma=arb[nod*2].suma+arb[nod*2+1].suma;
}
}
int main()
{ f>>n>>q;
for (i=1;i<=n;i++){
f>>a[i];
}
init(1,1,n);
for (i=1;i<=q;i++){
f>>t>>x>>y;
if (t==0){
update(1,1,n,x,y);
}
else{
sum=0;
querry(1,1,n,x,y);
g<<sum<<'\n';
}
}
return 0;
}