#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;
int l,r, m;
cin >> type;
if(type == 1)
{
cin >> l >> r >> m; // 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+PiBhW2ldOwogICAgICAgIHVwZGF0ZShpLGFbaV0pOwogICAgfQogICAgd2hpbGUocS0tKQogICAgewogICAgICAgIGludCB0eXBlOwogICAgICAgIGludCBsLHIsIG07CiAgICAgICAgY2luID4+IHR5cGU7CiAgICAgICAgaWYodHlwZSA9PSAxKQogICAgICAgIHsKICAgICAgICAgICAgY2luID4+IGwgPj4gciA+PiBtOyAvLyBhW2xdICs9IHI7CiAgICAgICAgICAgIHVwZGF0ZShsLG0pOwogICAgICAgICAgICB1cGRhdGUociArIDEsIC0gbSk7CiAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICB7CiAgICAgICAgICAgIGludCBjLGQ7IGNpbiA+PiBjID4+IGQ7CiAgICAgICAgICAgIGNvdXQgPDwgZ2V0dChkKSAtIGdldHQoYyAtIDEpIDw8ICdcbic7CiAgICAgICAgfQogICAgfQp9CmludCBtYWluKCkgIHsKICAgIGlmKGZvcGVuKChOQU1FICsgIi5JTlAiKS5jX3N0cigpLCAiciIpKQogICAgewogICAgICAgIGZyZW9wZW4oKE5BTUUgKyAiLklOUCIpLmNfc3RyKCksICJyIiwgc3RkaW4pOwogICAgICAgIGZyZW9wZW4oKE5BTUUgKyAiLk9VVCIpLmNfc3RyKCksICJ3Iiwgc3Rkb3V0KTsKICAgIH0KICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7CiAgICBjaW4udGllKDApOwogICAgY291dC50aWUoMCk7CgoKICAgIGludCB0ZXN0Y2FzZSA9IDEgOwogICAgLy9jaW4+PnRlc3RjYXNlOwoKICAgIHdoaWxlKHRlc3RjYXNlLS0pIHNvbHZlKCk7CgogICAgcmV0dXJuIDA7Cn0=