#include<bits/stdc++.h>
using namespace std;
const int NMAX = 15005;
int v[NMAX*4];
int fiuStanga ( int i ) { return 2 * i; }
int fiuDreapta ( int i ) { return 2 * i + 1; }
void build ( int nod , int val , int a , int b , int nodJos )
{
if ( a == b ){
v[nod] += val;
return;
}
int mij = ( a + b ) / 2;
if ( nodJos <= mij ){
build ( fiuStanga(nod) , val , a , mij , nodJos );
}
else{
build ( fiuDreapta(nod) , val , mij + 1 , b , nodJos );
}
v[nod] = v[fiuDreapta(nod)] + v[fiuStanga(nod)];
}
int query ( int nod , int st , int dr , int a , int b )
{
if ( st > b ) return 0;
if ( dr < a ) return 0;
if ( st >= a && dr <= b ) return v[nod];
return query(fiuStanga(nod),st,(st+dr)/2,a,b) + query(fiuDreapta(nod),(st+dr)/2+1,dr,a,b);
}
ifstream in ("datorii.in");
ofstream out ("datorii.out");
int main()
{
int n,q;
in>>n>>q;
for ( int i = 1 ; i <= n ; i++ ){
int nr;
in>>nr;
build(1,nr,1,n,i);
}
for ( int i = 1 ; i <= q ; i++ ){
int p , a , b;
in>>p>>a>>b;
if ( p == 0 ){
build(1,-b,1,n,a);
}
else{
out<<query(1,1,n,a,b)<<'\n';
}
}
return 0;
}