#include <fstream>
#include <algorithm>
using namespace std;
ifstream cin("datorii.in");
ofstream cout("datorii.out");
int N, M, ARB[70100], A, B, rs, a[15001];
void update(int left, int right, int nod, int val, int poz){
if(left == right) ARB[nod] = val;
else{
int pivot = (left + right)/2;
if(poz <= pivot) update(left, pivot, 2*nod, val, poz);
else update(pivot+1, right, 2*nod + 1, val ,poz);
ARB[nod] = ARB[2*nod] + ARB[2*nod+1];
}
}
void achitare(int left, int right, int nod, int val, int poz){
if(left == right) ARB[nod] -= val;
else{
int pivot = (left + right)/2;
if(poz <= pivot) achitare(left, pivot, 2*nod, val, poz);
else achitare(pivot+1, right, 2*nod + 1, val ,poz);
ARB[nod] = ARB[2*nod] + ARB[2*nod+1];
}
}
void query(int left, int right, int nod, int x, int y){
if(left >= x && right <= y) rs += ARB[nod];
else {
int pivot = (left+right)/2;
if(x <= pivot) query(left, pivot, 2*nod, x, y);
if(y > pivot) query(pivot+1, right, 2*nod + 1, x, y);
}
}
int main(){
cin >> N >> M;
for(int i = 1; i <= N; i++){
cin >> a[i];
update(1,N,1,a[i],i);
}
for(int i = 1; i <= M; i++){
int X;
cin >> X >> A >> B;
if(X == 0){
achitare(1, N, 1, B, A);
}
else{
rs = 0;
query(1, N, 1, A, B);
cout << rs << '\n';
}
}
return 0;
}