#include <fstream>
using namespace std;
//////////////////////////////////////
ifstream cin("datorii.in");
ofstream cout("datorii.out");
const int MAX = 1e5 + 1;
int aint[4 * MAX] , v[MAX] , n , q , st , dr , aux, poz , achitare;
/////////////////////////////////////////////
void initaint( int nod , int st , int dr ){
if( st == dr ){
aint[nod] = v[st];
return ;
}
int mij = (st+dr)/2;
initaint(nod*2,st,mij);
initaint(nod*2+1,mij+1,dr);
aint[nod] = aint[nod*2] + aint[nod*2 + 1];
}
int query( int nod , int st , int dr, int qst, int qdr){
if(qst <= st && dr <= qdr){
return aint[nod];
}
int mij = (st+dr)/2;
if(qst > mij) return query(nod*2 + 1,mij+1,dr,qst,qdr);
if(qdr <= mij) return query(nod*2, st, mij,qst,qdr);
return query(nod*2, st, mij,qst,qdr) + query(nod*2 + 1,mij+1,dr,qst,qdr);
}
void update( int nod , int st , int dr , int pos , int achitare){
if( st == dr ){
aint[nod] -= achitare;
return;
}
int mij = (st+dr)/2;
if(pos <= mij) update(nod * 2, st,mij,pos,achitare);
if(pos > mij) update(nod * 2 + 1, mij + 1 , dr ,pos,achitare);
aint[nod] = aint[nod*2] + aint[nod * 2 + 1];
}
int main()
{
cin >> n >> q;
for(int i = 1 ; i <= n ; i++){
cin >> v[i];
}
initaint(1,1,n);
while(q--){
cin >> aux;
if(!aux){
cin >> poz >> achitare;
update(1,1,n,poz,achitare);
}
if(aux){
cin >> st >> dr;
cout << query(1,1,n,st,dr) << '\n';
}
}
return 0;
}