#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
template<class T> bool maximize(T &a, const T &b){ return (a < b ? a = b, 1 : 0); }
template<class T> bool minimize(T &a, const T &b){ return (a > b ? a = b, 1 : 0); }
#define fi first
#define se second
#define pb push_back
#define f(i, k, n, d) for (int i = k; i <= n; i += d)
#define rf(i, k, n, d) for (int i = k; i >= n; i += d)
#define pb push_back
#define ii pair<int, int>
#define all(x) x.begin(), x.end()
const string NAME = "SHOES";
/*** end of template ***/
const int N = 100009, mod = 1e9 + 7;
const int INF=0x3f3f3f3f;
int n,a[N],q;
ll T[N];
void update(int x,int delta)
{ //ax += delta
while(x <= n)
{
T[x] += delta;
x += x & (-x); // lên cha
}
}
ll gett(int x){ // a1 + a2 + ... a+ax
ll sum = 0;
while (x > 0){
sum += T[x];// a[x-2^k+1]+...+a[x]
x -= x & (-x);// x ve x - 2^k
}
return sum;
}
void solve() {
cin >> n >> q;
for(int i = 1; i <= n; i++)
{
cin >> a[i];
update(i,a[i]);
}
while(q--)
{
int type;
cin >> type;
if(type == 1)
{
int l,r, m;
cin >> l >> r; // a[l] += r;
update(l,m);
update(r + 1, - m);
}
else
{
int c,d; cin >> c >> d;
cout << gett(d) - gett(c - 1) << '\n';
}
}
}
int main() {
if(fopen((NAME + ".INP").c_str(), "r"))
{
freopen((NAME + ".INP").c_str(), "r", stdin);
freopen((NAME + ".OUT").c_str(), "w", stdout);
}
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int testcase = 1 ;
//cin>>testcase;
while(testcase--) solve();
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKdHlwZWRlZiBsb25nIGxvbmcgbGw7Cgp0ZW1wbGF0ZTxjbGFzcyBUPiBib29sIG1heGltaXplKFQgJmEsIGNvbnN0IFQgJmIpeyByZXR1cm4gKGEgPCBiID8gYSA9IGIsIDEgOiAwKTsgfQp0ZW1wbGF0ZTxjbGFzcyBUPiBib29sIG1pbmltaXplKFQgJmEsIGNvbnN0IFQgJmIpeyByZXR1cm4gKGEgPiBiID8gYSA9IGIsIDEgOiAwKTsgfQoKI2RlZmluZSBmaSBmaXJzdAojZGVmaW5lIHNlIHNlY29uZAojZGVmaW5lIHBiIHB1c2hfYmFjawoKI2RlZmluZSBmKGksIGssIG4sIGQpIGZvciAoaW50IGkgPSBrOyBpIDw9IG47IGkgKz0gZCkKI2RlZmluZSByZihpLCBrLCBuLCBkKSBmb3IgKGludCBpID0gazsgaSA+PSBuOyBpICs9IGQpCgojZGVmaW5lIHBiIHB1c2hfYmFjawojZGVmaW5lIGlpIHBhaXI8aW50LCBpbnQ+CgojZGVmaW5lIGFsbCh4KSB4LmJlZ2luKCksIHguZW5kKCkKCmNvbnN0IHN0cmluZyBOQU1FID0gIlNIT0VTIjsKCi8qKiogZW5kIG9mIHRlbXBsYXRlICoqKi8KCmNvbnN0IGludCBOID0gMTAwMDA5LCBtb2QgPSAxZTkgKyA3Owpjb25zdCBpbnQgSU5GPTB4M2YzZjNmM2Y7CgppbnQgbixhW05dLHE7CmxsIFRbTl07CnZvaWQgdXBkYXRlKGludCB4LGludCBkZWx0YSkKeyAvL2F4ICs9IGRlbHRhCiAgICB3aGlsZSh4IDw9IG4pCiAgICB7CiAgICAgICAgVFt4XSArPSBkZWx0YTsKICAgICAgICB4ICs9IHggJiAoLXgpOyAvLyBsw6puIGNoYQogICAgfQp9CmxsIGdldHQoaW50IHgpeyAvLyBhMSArIGEyICsgLi4uIGErYXgKICAgIGxsIHN1bSA9IDA7CiAgICB3aGlsZSAoeCA+IDApewogICAgICAgIHN1bSArPSBUW3hdOy8vIGFbeC0yXmsrMV0rLi4uK2FbeF0KICAgICAgICB4IC09IHggJiAoLXgpOy8vIHggdmUgeCAtIDJeawogICAgfQogICAgcmV0dXJuIHN1bTsKfQp2b2lkIHNvbHZlKCkgewogICAgY2luID4+IG4gPj4gcTsKICAgIGZvcihpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKQogICAgewogICAgICAgIGNpbiA+PiBhW2ldOwogICAgICAgIHVwZGF0ZShpLGFbaV0pOwogICAgfQogICAgd2hpbGUocS0tKQogICAgewogICAgICAgIGludCB0eXBlOwogICAgICAgIGNpbiA+PiB0eXBlOwogICAgICAgIGlmKHR5cGUgPT0gMSkKICAgICAgICB7CiAgICAgICAgICAgIGludCBsLHIsIG07CiAgICAgICAgICAgIGNpbiA+PiBsID4+IHI7IC8vIGFbbF0gKz0gcjsKICAgICAgICAgICAgdXBkYXRlKGwsbSk7CiAgICAgICAgICAgIHVwZGF0ZShyICsgMSwgLSBtKTsKICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICAgICAgaW50IGMsZDsgY2luID4+IGMgPj4gZDsKICAgICAgICAgICAgY291dCA8PCBnZXR0KGQpIC0gZ2V0dChjIC0gMSkgPDwgJ1xuJzsKICAgICAgICB9CiAgICB9Cn0KaW50IG1haW4oKSAgewogICAgaWYoZm9wZW4oKE5BTUUgKyAiLklOUCIpLmNfc3RyKCksICJyIikpCiAgICB7CiAgICAgICAgZnJlb3BlbigoTkFNRSArICIuSU5QIikuY19zdHIoKSwgInIiLCBzdGRpbik7CiAgICAgICAgZnJlb3BlbigoTkFNRSArICIuT1VUIikuY19zdHIoKSwgInciLCBzdGRvdXQpOwogICAgfQogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTsKICAgIGNpbi50aWUoMCk7CiAgICBjb3V0LnRpZSgwKTsKCgogICAgaW50IHRlc3RjYXNlID0gMSA7CiAgICAvL2Npbj4+dGVzdGNhc2U7CgogICAgd2hpbGUodGVzdGNhc2UtLSkgc29sdmUoKTsKCiAgICByZXR1cm4gMDsKfQo=