#include <iostream>
#include <fstream>
#define MAXN 15000
using namespace std;
int n, m;
int arbint[MAXN];
void update(int l, int r, int p, int x, int i = 0, bool sub= false){
if(l==r){
if(sub) arbint[i] -= x;
else arbint[i] = x;
return;
}
int mid = (l+r)/2;
if(p<=mid) update(l, mid, p, x, i*2+1, sub);
else update(mid+1, r, p, x, i*2+2,sub);
arbint[i] = arbint[i*2+1] + arbint[i*2+2];
}
int query(int l, int r, int ql, int qr, int i = 0){
if(ql<=l && qr>=r)
return arbint[i];
int mid = (l+r)/2;
int res = 0;
if(ql<=mid) res += query(l, mid, ql, qr, i*2+1);
if(qr>mid) res += query(mid+1, r, ql, qr, i*2+2);
return res;
}
int main() {
int x, a, b;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
fin>>n>>m;
for(int i=0;i<n;++i){
fin>>x;
update(0, n-1, i, x);
}
while(m--){
fin>>x>>a>>b;
if(!x)
update(0, n-1, a-1, b,0,true);
else{
fout<<query(0,n-1, a-1,b-1)<<'\n';
}
}
return 0;
}