#include<bits/stdc++.h>
using namespace std;
const int MAX_N = 2e5 + 5;
const int BLOCK_SIZE = 500;
int a[MAX_N];
long long s[BLOCK_SIZE];
int main(){
int n, q;
cin >> n >> q;
for(int i = 0; i < n; i++){
cin >> a[i];
s[i / BLOCK_SIZE] += a[i];
}
while(q--){
int query;
cin >> query;
if(query == 1){
int id, val;
cin >> id >> val;
--id;
s[id / BLOCK_SIZE] += val - a[id];
a[id] = val;
}
else{
long long ans = 0;
int l, r;
cin >> l >> r;
--l, --r;
int blockL = l / BLOCK_SIZE;
int blockR = r / BLOCK_SIZE;
if(blockL == blockR){
for(int i = l; i <= r; i++)
ans += a[i];
cout << ans << '\n';
continue;
}
for(int i = l, endP = (blockL + 1) * BLOCK_SIZE - 1; i <= endP; i++)
ans += a[i];
for(int i = blockL + 1; i <= blockR - 1; i++)
ans += s[i];
for(int i = blockR * BLOCK_SIZE; i <= r; i++)
ans += a[i];
cout << ans << '\n';
}
}
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIApjb25zdCBpbnQgTUFYX04gPSAyZTUgKyA1Owpjb25zdCBpbnQgQkxPQ0tfU0laRSA9IDUwMDsKIAppbnQgYVtNQVhfTl07CmxvbmcgbG9uZyBzW0JMT0NLX1NJWkVdOwogCmludCBtYWluKCl7CiAgaW50IG4sIHE7CiAgY2luID4+IG4gPj4gcTsKIAogIGZvcihpbnQgaSA9IDA7IGkgPCBuOyBpKyspewogICAgY2luID4+IGFbaV07CiAgICBzW2kgLyBCTE9DS19TSVpFXSArPSBhW2ldOwogIH0KIAogIHdoaWxlKHEtLSl7CiAgICBpbnQgcXVlcnk7CiAgICBjaW4gPj4gcXVlcnk7CiAKICAgIGlmKHF1ZXJ5ID09IDEpewogICAgICBpbnQgaWQsIHZhbDsKICAgICAgY2luID4+IGlkID4+IHZhbDsKICAgICAgLS1pZDsKICAgICAgc1tpZCAvIEJMT0NLX1NJWkVdICs9IHZhbCAtIGFbaWRdOwogICAgICBhW2lkXSA9IHZhbDsKICAgIH0KIAogICAgZWxzZXsKICAgICAgbG9uZyBsb25nIGFucyA9IDA7CiAgICAgIGludCBsLCByOwogICAgICBjaW4gPj4gbCA+PiByOwogICAgICAtLWwsIC0tcjsKIAogICAgICBpbnQgYmxvY2tMID0gbCAvIEJMT0NLX1NJWkU7CiAgICAgIGludCBibG9ja1IgPSByIC8gQkxPQ0tfU0laRTsKIAogICAgICBpZihibG9ja0wgPT0gYmxvY2tSKXsKICAgICAgICBmb3IoaW50IGkgPSBsOyBpIDw9IHI7IGkrKykKICAgICAgICAgIGFucyArPSBhW2ldOwogICAgICAgIGNvdXQgPDwgYW5zIDw8ICdcbic7CiAgICAgICAgY29udGludWU7CiAgICAgIH0KIAogICAgICBmb3IoaW50IGkgPSBsLCBlbmRQID0gKGJsb2NrTCArIDEpICogQkxPQ0tfU0laRSAtIDE7IGkgPD0gZW5kUDsgaSsrKQogICAgICAgIGFucyArPSBhW2ldOwogICAgICBmb3IoaW50IGkgPSBibG9ja0wgKyAxOyBpIDw9IGJsb2NrUiAtIDE7IGkrKykKICAgICAgICBhbnMgKz0gc1tpXTsKICAgICAgZm9yKGludCBpID0gYmxvY2tSICogQkxPQ0tfU0laRTsgaSA8PSByOyBpKyspCiAgICAgICAgYW5zICs9IGFbaV07CiAKICAgICAgY291dCA8PCBhbnMgPDwgJ1xuJzsKICAgIH0KICB9CiAKICByZXR1cm4gMDsKfQ==