#include <iostream>
#include <fstream>
#include <bits/stdc++.h>
using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
const int nmax = 15e3+10;
int n,m,operatie,ans;
vector<int> values(nmax,0),aint(nmax*4,0);
void read_input(){
fin >> n >> m;
for(int i = 1; i <=n; i++){
fin >> values[i];
}
};
void build_aint(int nod,int index_1,int index_2){
if(index_1 == index_2){
aint[nod] = values[index_1];
}else{
int mij = (index_1 + index_2)/2;
build_aint(nod*2,index_1,mij);
build_aint(nod*2+1,mij+1,index_2);
aint[nod] = aint[nod*2] + aint[nod*2+1];
}
};
void update(int nod,int index_1,int index_2,int position,int value){
if(index_1 == index_2){
aint[nod] -= value;
}else{
int mij = (index_1+index_2)/2;
if(position <= mij){
update(nod*2,index_1,mij,position,value);
}else{
update(nod*2+1,mij+1,index_2,position,value);
};
aint[nod] = aint[nod*2] + aint[nod*2+1];
}
}
void query(int nod,int index_1,int index_2,int a,int b,int &ans){
if(index_1 >= a && index_2 <= b){
ans += aint[nod];
}else{
int mij = (index_1+index_2)/2;
if(a <= mij){
query(nod*2,index_1,mij,a,b,ans);
}
if(b >= mij+1){
query(nod*2+1,mij+1,index_2,a,b,ans);
}
}
}
int main(){
read_input();
build_aint(1,1,n);
for(int i = 1; i <=m; i++){
fin >> operatie;
if(operatie == 0){
int poz,val;
fin >> poz >> val;
update(1,1,n,poz,val);
}else{
int st,dr;
fin >> st >> dr;
ans = 0;
query(1,1,n,st,dr,ans);
fout << ans << '\n';
}
};
return 0;
}