#include<stdio.h>
#define NMAX 15007
int Ans, n, m;
int Arbi[NMAX * 3];
void update(int nod, int st, int dr, int VAL, int poz){
if(st == dr){
Arbi[nod] += VAL;
return ;
}
int med = (st + dr) >> 1;
if(med >= poz)
update(2 * nod, st, med, VAL, poz);
else
update(2 * nod + 1, med + 1, dr, VAL, poz);
Arbi[nod] = Arbi[nod * 2] + Arbi[nod * 2 + 1];
}
void query(int nod, int st, int dr, int x, int y)
{
if(st >= x && dr <= y){
Ans += Arbi[nod];
return ;
}
int med = (st + dr) >> 1;
if(med >= x)
query(2 * nod, st, med, x, y);
if(med < y)
query(2 * nod + 1, med + 1, dr, x, y);
}
int main(){
freopen("datorii.in", "r", stdin);
freopen("datorii.out", "w", stdout);
scanf("%d %d", &n, &m);
int Number = 0;
for(int i = 1; i <= n; ++ i)
scanf("%d", &Number) , update(1, 1, n, Number, i);
for(int i = 1; i <= m; ++ i){
int a, b, Tip;
scanf("%d %d %d", &Tip, &a, &b);
if(Tip == 0)
update(1, 1, n, - b, a);
else{
Ans = 0;
query(1, 1, n, a, b);
printf("%d\n", Ans);
}
}
}