#include <fstream>
using namespace std;
void update(int nod, int left, int right, int poz, int val,int v[]){
if(poz < left || poz > right)
return;
if(left == right){
v[nod]+=val;
return;
}
int mid= (left + right) / 2;
update(nod*2, left, mid, poz, val,v);
update(nod*2+1, mid+1, right, poz, val,v);
v[nod]=v[nod*2]+v[nod*2+1];
}
int sum(int nod, int left, int right, int i, int j,int v[]){
if(right < i || left > j)
return 0;
if(i <= left && right <= j)
return v[nod];
int mid= (left + right) / 2;
return sum(nod*2, left, mid, i, j,v) + sum(nod * 2 + 1, mid + 1, right, i, j,v);
}
int main(){
int v[400005];
ifstream f("datorii.in");
ofstream g("datorii.out");
int n,m,op,a,b;
f>>n>>m;
for(int i=1;i<=n;i++){
f>>a;
update(1, 1, n, i, a,v);
}
for(int i=0;i<m;i++){
f>>op>>a>>b;
if(op==1)
g<<sum(1, 1, n, a, b,v)<<"\n";
else
update(1, 1, n, a, -b,v);
}
return 0;
}