#include <bits/stdc++.h>
using namespace std;
#define fastIO ios_base::sync_with_stdio(0); cin.tie(0);
#define ll long long
#define pb push_back
#define all(x) x.begin(), x.end()
const ll INF = 1e18;
const int N = 1e5+5;
struct node{
ll val, lazy;
} seg[4*N];
int n, m;
void down(int id){
ll k = seg[id].lazy;
if (k!=0){
seg[2*id].val += k;
seg[2*id].lazy += k;
seg[2*id+1].val += k;
seg[2*id+1].lazy += k;
seg[id].lazy = 0;
}
}
void update(int id, int l, int r, int u, int v, int k){
if (l>v || r<u) return;
if (u<=l && r<=v){
seg[id].val += k;
seg[id].lazy += k;
return;
}
down(id);
int m = (l+r)/2;
update(2*id, l, m, u, v, k);
update(2*id+1, m+1, r, u, v, k);
seg[id].val = max(seg[2*id].val, seg[2*id+1].val);
}
ll get(int id, int l, int r, int u, int v){
if (l>v || r<u){
return -INF;
}
if (u<=l && r<=v){
return seg[id].val;
}
down(id);
int m = (l+r)/2;
ll get1 = get(2*id, l, m, u, v);
ll get2 = get(2*id+1, m+1, r, u, v);
return max(get1, get2);
}
int main(){
fastIO;
cin >> n >> m;
while (m--){
int type;
cin >> type;
if (type==0){
int u, v, k;
cin >> u >> v >> k;
update(1, 1, n, u, v, k);
}
else{
int u, v;
cin >> u >> v;
cout << get(1, 1, n, u, v) << '\n';
}
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgZmFzdElPIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7IGNpbi50aWUoMCk7CiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgYWxsKHgpIHguYmVnaW4oKSwgeC5lbmQoKQoKY29uc3QgbGwgSU5GID0gMWUxODsKY29uc3QgaW50IE4gPSAxZTUrNTsKCnN0cnVjdCBub2RlewogICAgbGwgdmFsLCBsYXp5Owp9IHNlZ1s0Kk5dOwppbnQgbiwgbTsKCnZvaWQgZG93bihpbnQgaWQpewogICAgbGwgayA9IHNlZ1tpZF0ubGF6eTsKICAgIGlmIChrIT0wKXsKICAgICAgICBzZWdbMippZF0udmFsICs9IGs7CiAgICAgICAgc2VnWzIqaWRdLmxhenkgKz0gazsKCiAgICAgICAgc2VnWzIqaWQrMV0udmFsICs9IGs7CiAgICAgICAgc2VnWzIqaWQrMV0ubGF6eSArPSBrOwoKICAgICAgICBzZWdbaWRdLmxhenkgPSAwOwogICAgfQp9Cgp2b2lkIHVwZGF0ZShpbnQgaWQsIGludCBsLCBpbnQgciwgaW50IHUsIGludCB2LCBpbnQgayl7CiAgICBpZiAobD52IHx8IHI8dSkgcmV0dXJuOwogICAgaWYgKHU8PWwgJiYgcjw9dil7CiAgICAgICAgc2VnW2lkXS52YWwgKz0gazsKICAgICAgICBzZWdbaWRdLmxhenkgKz0gazsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBkb3duKGlkKTsKICAgIGludCBtID0gKGwrcikvMjsKICAgIHVwZGF0ZSgyKmlkLCBsLCBtLCB1LCB2LCBrKTsKICAgIHVwZGF0ZSgyKmlkKzEsIG0rMSwgciwgdSwgdiwgayk7CiAgICBzZWdbaWRdLnZhbCA9IG1heChzZWdbMippZF0udmFsLCBzZWdbMippZCsxXS52YWwpOwp9CgpsbCBnZXQoaW50IGlkLCBpbnQgbCwgaW50IHIsIGludCB1LCBpbnQgdil7CiAgICBpZiAobD52IHx8IHI8dSl7CiAgICAgICAgcmV0dXJuIC1JTkY7CiAgICB9CiAgICBpZiAodTw9bCAmJiByPD12KXsKICAgICAgICByZXR1cm4gc2VnW2lkXS52YWw7CiAgICB9CiAgICBkb3duKGlkKTsKICAgIGludCBtID0gKGwrcikvMjsKICAgIGxsIGdldDEgPSBnZXQoMippZCwgbCwgbSwgdSwgdik7CiAgICBsbCBnZXQyID0gZ2V0KDIqaWQrMSwgbSsxLCByLCB1LCB2KTsKICAgIHJldHVybiBtYXgoZ2V0MSwgZ2V0Mik7Cn0KCmludCBtYWluKCl7CiAgICBmYXN0SU87CgogICAgY2luID4+IG4gPj4gbTsKICAgIHdoaWxlIChtLS0pewogICAgICAgIGludCB0eXBlOwogICAgICAgIGNpbiA+PiB0eXBlOwogICAgICAgIGlmICh0eXBlPT0wKXsKICAgICAgICAgICAgaW50IHUsIHYsIGs7CiAgICAgICAgICAgIGNpbiA+PiB1ID4+IHYgPj4gazsKICAgICAgICAgICAgdXBkYXRlKDEsIDEsIG4sIHUsIHYsIGspOwogICAgICAgIH0KICAgICAgICBlbHNlewogICAgICAgICAgICBpbnQgdSwgdjsKICAgICAgICAgICAgY2luID4+IHUgPj4gdjsKICAgICAgICAgICAgY291dCA8PCBnZXQoMSwgMSwgbiwgdSwgdikgPDwgJ1xuJzsKICAgICAgICB9CiAgICB9Cn0=