#include <iostream>
#include <algorithm>
#include <cmath>
#include <string>
#include <vector>
#include <queue>
#include <stack>
#include <set>
#include <map>
#include <iomanip>
#include <numeric>
#include <unordered_map>
#include <unordered_set>
#include <climits>
#define fora(e,v) for(auto &e: v)
#define srt(v) sort(v.begin(), v.end())
#define srtR(v) sort(v.begin(), v.end(), greater<int>())
#define fill(arr,value) memset(arr, value, sizeof(arr))
#define ll long long
#define all(v) v.begin(), v.end()
#define sz(v) ((int)v.size())
using namespace std;
const int MAX = 2 * 1e5 + 5;
const int OO = INT_MAX;
const int MOD = 1e9 + 7;
vector<int> fact(MAX);
ll gcd(ll a, ll b) {
if (!b) {
return a;
}
return gcd(b, a % b);
}
ll lcm(ll a, ll b) {
return a / gcd(a, b) * b;
}
ll power(ll base, ll pow) {
if (pow == 0) {
return 1;
}
ll half = power(base, pow / 2);
half = (half * half) % MOD;
if (pow % 2 == 1) {
half = (half * base) % MOD;
}
return half;
}
ll add(ll a, ll b) {
return ((a % MOD) + (b % MOD)) % MOD;
}
ll sub(ll a, ll b) {
return (((a % MOD) - (b % MOD)) % MOD + MOD) % MOD;
}
ll mul(ll a, ll b) {
return ((a % MOD) * (b % MOD)) % MOD;
}
ll inv(ll base) {
return power(base, MOD - 2);
}
ll divide(ll a, ll b) {
return mul(a, inv(b));
}
ll nCr(ll n, ll r) {
if (r > n) return 0;
return mul(fact[n], inv(mul(fact[r], fact[n - r])));
}
ll nPr(int n, int r) {
return divide(fact[n], fact[n - r]);
}
void doFact() {
fact[0] = 1;
for (int i = 1; i < MAX; i++) {
fact[i] = mul(i, fact[i - 1]);
}
}
bool isPrime(ll n) {
if (n == 1) return false;
if (n % 2 == 0) return n == 2;
for (int i = 3; i * i <= n; i += 2) {
if (n % i == 0) return false;
}
return true;
}
int n, q;
struct sgTree {
int size;
vector<ll> values;
vector<ll> mins;
ll noOperation = LLONG_MAX;
void init(int n) {
size = 1;
while (size < n) size *= 2;
values.resize(2 * size,0);
mins.resize(2 * size,0);
}
void set(int idx, ll val, int root, int lx, int rx) {
if (rx - lx == 1) {
values[root] = val;
return;
}
int mid = lx + (rx - lx) / 2;
if (idx < mid) {
set(idx, val, 2 * root + 1, lx, mid);
} else {
set(idx, val, 2 * root + 2, mid, rx);
}
values[root] = values[2 * root + 1] + values[2 * root + 2];
}
void set(int idx, ll val) {
set(idx, val, 0, 0, size);
}
void modify(ll l, ll r, ll val,int root, int lx, int rx) {
if (lx >= r || rx <= l) return;
if (lx >= l && rx <= r) {
values[root] += val;
mins[root] += val;
return;
}
int mid = lx + (rx - lx) / 2;
modify(l, r,val, 2 * root + 1, lx, mid);
modify(l, r,val, 2 * root + 2, mid, rx);
mins[root] = min(mins[2 * root + 1],mins[2 * root + 2]) + values[root];
}
void modify(ll l, ll r, ll val) {
modify(l,r,val,0,0,size);
}
ll getMin(int l, int r, int root, int lx, int rx) {
if (lx >= r || rx <= l) return LLONG_MAX;
if (lx >= l && rx <= r) return mins[root];
int mid = lx + (rx - lx) / 2;
ll mn1 = getMin(l, r, 2 * root + 1, lx, mid);
ll mn2 = getMin(l, r, 2 * root + 2, mid, rx);
return min(mn1,mn2) + values[root];
}
ll getMin(int l,int r) {
return getMin(l, r, 0, 0, size);
}
ll calc(int l, int r, int root, int lx, int rx) {
if (lx >= r || rx <= l) return 0;
if (lx >= l && rx <= r) return values[root];
int mid = lx + (rx - lx) / 2;
ll sum1 = calc(l, r, 2 * root + 1, lx, mid);
ll sum2 = calc(l, r, 2 * root + 2, mid, rx);
return sum1 + sum2;
}
ll calc(int l,int r) {
return calc(l, r, 0, 0, size);
}
};
void solve() {
cin >> n >> q;
sgTree seg;
seg.init(n);
while(q--) {
int op;cin>>op;
if(op == 1) {
ll l,r,val;cin>>l>>r>>val;
seg.modify(l,r,val);
}
else {
ll l,r;cin >> l>> r;
cout<<seg.getMin(l,r)<<"\n";
}
}
}
int main() {
ll t = 1;
//cin >> t;
while (t--) {
solve();
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8Y21hdGg+CiNpbmNsdWRlIDxzdHJpbmc+CiNpbmNsdWRlIDx2ZWN0b3I+CiNpbmNsdWRlIDxxdWV1ZT4KI2luY2x1ZGUgPHN0YWNrPgojaW5jbHVkZSA8c2V0PgojaW5jbHVkZSA8bWFwPgojaW5jbHVkZSA8aW9tYW5pcD4KI2luY2x1ZGUgPG51bWVyaWM+CiNpbmNsdWRlIDx1bm9yZGVyZWRfbWFwPgojaW5jbHVkZSA8dW5vcmRlcmVkX3NldD4KI2luY2x1ZGUgPGNsaW1pdHM+CgojZGVmaW5lIGZvcmEoZSx2KSBmb3IoYXV0byAmZTogdikKI2RlZmluZSBzcnQodikgc29ydCh2LmJlZ2luKCksIHYuZW5kKCkpCiNkZWZpbmUgc3J0Uih2KSBzb3J0KHYuYmVnaW4oKSwgdi5lbmQoKSwgZ3JlYXRlcjxpbnQ+KCkpCiNkZWZpbmUgZmlsbChhcnIsdmFsdWUpIG1lbXNldChhcnIsIHZhbHVlLCBzaXplb2YoYXJyKSkKI2RlZmluZSBsbCBsb25nIGxvbmcKI2RlZmluZSBhbGwodikgdi5iZWdpbigpLCB2LmVuZCgpCiNkZWZpbmUgc3oodikgKChpbnQpdi5zaXplKCkpCgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY29uc3QgaW50IE1BWCA9IDIgKiAxZTUgKyA1Owpjb25zdCBpbnQgT08gPSBJTlRfTUFYOwpjb25zdCBpbnQgTU9EID0gMWU5ICsgNzsKCnZlY3RvcjxpbnQ+IGZhY3QoTUFYKTsKCmxsIGdjZChsbCBhLCBsbCBiKSB7CiAgICBpZiAoIWIpIHsKICAgICAgICByZXR1cm4gYTsKICAgIH0KICAgIHJldHVybiBnY2QoYiwgYSAlIGIpOwp9CgpsbCBsY20obGwgYSwgbGwgYikgewogICAgcmV0dXJuIGEgLyBnY2QoYSwgYikgKiBiOwp9CgpsbCBwb3dlcihsbCBiYXNlLCBsbCBwb3cpIHsKICAgIGlmIChwb3cgPT0gMCkgewogICAgICAgIHJldHVybiAxOwogICAgfQoKICAgIGxsIGhhbGYgPSBwb3dlcihiYXNlLCBwb3cgLyAyKTsKICAgIGhhbGYgPSAoaGFsZiAqIGhhbGYpICUgTU9EOwoKICAgIGlmIChwb3cgJSAyID09IDEpIHsKICAgICAgICBoYWxmID0gKGhhbGYgKiBiYXNlKSAlIE1PRDsKICAgIH0KCiAgICByZXR1cm4gaGFsZjsKfQoKbGwgYWRkKGxsIGEsIGxsIGIpIHsKICAgIHJldHVybiAoKGEgJSBNT0QpICsgKGIgJSBNT0QpKSAlIE1PRDsKfQoKbGwgc3ViKGxsIGEsIGxsIGIpIHsKICAgIHJldHVybiAoKChhICUgTU9EKSAtIChiICUgTU9EKSkgJSBNT0QgKyBNT0QpICUgTU9EOwp9CgpsbCBtdWwobGwgYSwgbGwgYikgewogICAgcmV0dXJuICgoYSAlIE1PRCkgKiAoYiAlIE1PRCkpICUgTU9EOwp9CgpsbCBpbnYobGwgYmFzZSkgewogICAgcmV0dXJuIHBvd2VyKGJhc2UsIE1PRCAtIDIpOwp9CgpsbCBkaXZpZGUobGwgYSwgbGwgYikgewogICAgcmV0dXJuIG11bChhLCBpbnYoYikpOwp9CgpsbCBuQ3IobGwgbiwgbGwgcikgewogICAgaWYgKHIgPiBuKSByZXR1cm4gMDsKICAgIHJldHVybiBtdWwoZmFjdFtuXSwgaW52KG11bChmYWN0W3JdLCBmYWN0W24gLSByXSkpKTsKfQoKbGwgblByKGludCBuLCBpbnQgcikgewogICAgcmV0dXJuIGRpdmlkZShmYWN0W25dLCBmYWN0W24gLSByXSk7Cn0KCnZvaWQgZG9GYWN0KCkgewogICAgZmFjdFswXSA9IDE7CiAgICBmb3IgKGludCBpID0gMTsgaSA8IE1BWDsgaSsrKSB7CiAgICAgICAgZmFjdFtpXSA9IG11bChpLCBmYWN0W2kgLSAxXSk7CiAgICB9Cn0KCmJvb2wgaXNQcmltZShsbCBuKSB7CiAgICBpZiAobiA9PSAxKSByZXR1cm4gZmFsc2U7CiAgICBpZiAobiAlIDIgPT0gMCkgcmV0dXJuIG4gPT0gMjsKICAgIGZvciAoaW50IGkgPSAzOyBpICogaSA8PSBuOyBpICs9IDIpIHsKICAgICAgICBpZiAobiAlIGkgPT0gMCkgcmV0dXJuIGZhbHNlOwogICAgfQogICAgcmV0dXJuIHRydWU7Cn0KCmludCBuLCBxOwoKc3RydWN0IHNnVHJlZSB7CiAgICBpbnQgc2l6ZTsKICAgIHZlY3RvcjxsbD4gdmFsdWVzOwogICAgdmVjdG9yPGxsPiBtaW5zOwoKICAgIGxsIG5vT3BlcmF0aW9uID0gTExPTkdfTUFYOwoKICAgIHZvaWQgaW5pdChpbnQgbikgewogICAgICAgIHNpemUgPSAxOwogICAgICAgIHdoaWxlIChzaXplIDwgbikgc2l6ZSAqPSAyOwogICAgICAgIHZhbHVlcy5yZXNpemUoMiAqIHNpemUsMCk7CiAgICAgICAgbWlucy5yZXNpemUoMiAqIHNpemUsMCk7CiAgICB9CgogICAgdm9pZCBzZXQoaW50IGlkeCwgbGwgdmFsLCBpbnQgcm9vdCwgaW50IGx4LCBpbnQgcngpIHsKICAgICAgICBpZiAocnggLSBseCA9PSAxKSB7CiAgICAgICAgICAgIHZhbHVlc1tyb290XSA9IHZhbDsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBpbnQgbWlkID0gbHggKyAocnggLSBseCkgLyAyOwogICAgICAgIGlmIChpZHggPCBtaWQpIHsKICAgICAgICAgICAgc2V0KGlkeCwgdmFsLCAyICogcm9vdCArIDEsIGx4LCBtaWQpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHNldChpZHgsIHZhbCwgMiAqIHJvb3QgKyAyLCBtaWQsIHJ4KTsKICAgICAgICB9CiAgICAgICAgdmFsdWVzW3Jvb3RdID0gdmFsdWVzWzIgKiByb290ICsgMV0gKyB2YWx1ZXNbMiAqIHJvb3QgKyAyXTsKICAgIH0KCiAgICB2b2lkIHNldChpbnQgaWR4LCBsbCB2YWwpIHsKICAgICAgICBzZXQoaWR4LCB2YWwsIDAsIDAsIHNpemUpOwogICAgfQoKICAgIHZvaWQgbW9kaWZ5KGxsIGwsIGxsIHIsIGxsIHZhbCxpbnQgcm9vdCwgaW50IGx4LCBpbnQgcngpIHsKICAgICAgICBpZiAobHggPj0gciB8fCByeCA8PSBsKSByZXR1cm47CiAgICAgICAgaWYgKGx4ID49IGwgJiYgcnggPD0gcikgewogICAgICAgICAgICB2YWx1ZXNbcm9vdF0gKz0gdmFsOwogICAgICAgICAgICBtaW5zW3Jvb3RdICs9IHZhbDsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBpbnQgbWlkID0gbHggKyAocnggLSBseCkgLyAyOwogICAgICAgIG1vZGlmeShsLCByLHZhbCwgMiAqIHJvb3QgKyAxLCBseCwgbWlkKTsKICAgICAgICBtb2RpZnkobCwgcix2YWwsIDIgKiByb290ICsgMiwgbWlkLCByeCk7CiAgICAgICAgbWluc1tyb290XSA9IG1pbihtaW5zWzIgKiByb290ICsgMV0sbWluc1syICogcm9vdCArIDJdKSArIHZhbHVlc1tyb290XTsKICAgIH0KCiAgICB2b2lkIG1vZGlmeShsbCBsLCBsbCByLCBsbCB2YWwpIHsKICAgICAgICBtb2RpZnkobCxyLHZhbCwwLDAsc2l6ZSk7CiAgICB9CgogICAgbGwgZ2V0TWluKGludCBsLCBpbnQgciwgaW50IHJvb3QsIGludCBseCwgaW50IHJ4KSB7CiAgICAgICAgaWYgKGx4ID49IHIgfHwgcnggPD0gbCkgcmV0dXJuIExMT05HX01BWDsKICAgICAgICBpZiAobHggPj0gbCAmJiByeCA8PSByKSByZXR1cm4gbWluc1tyb290XTsKICAgICAgICBpbnQgbWlkID0gbHggKyAocnggLSBseCkgLyAyOwogICAgICAgIGxsIG1uMSA9IGdldE1pbihsLCByLCAyICogcm9vdCArIDEsIGx4LCBtaWQpOwogICAgICAgIGxsIG1uMiA9IGdldE1pbihsLCByLCAyICogcm9vdCArIDIsIG1pZCwgcngpOwogICAgICAgIHJldHVybiBtaW4obW4xLG1uMikgKyB2YWx1ZXNbcm9vdF07CiAgICB9CgogICAgbGwgZ2V0TWluKGludCBsLGludCByKSB7CiAgICAgICAgcmV0dXJuIGdldE1pbihsLCByLCAwLCAwLCBzaXplKTsKICAgIH0KCiAgICBsbCBjYWxjKGludCBsLCBpbnQgciwgaW50IHJvb3QsIGludCBseCwgaW50IHJ4KSB7CiAgICAgICAgaWYgKGx4ID49IHIgfHwgcnggPD0gbCkgcmV0dXJuIDA7CiAgICAgICAgaWYgKGx4ID49IGwgJiYgcnggPD0gcikgcmV0dXJuIHZhbHVlc1tyb290XTsKICAgICAgICBpbnQgbWlkID0gbHggKyAocnggLSBseCkgLyAyOwogICAgICAgIGxsIHN1bTEgPSBjYWxjKGwsIHIsIDIgKiByb290ICsgMSwgbHgsIG1pZCk7CiAgICAgICAgbGwgc3VtMiA9IGNhbGMobCwgciwgMiAqIHJvb3QgKyAyLCBtaWQsIHJ4KTsKICAgICAgICByZXR1cm4gc3VtMSArIHN1bTI7CiAgICB9CgogICAgbGwgY2FsYyhpbnQgbCxpbnQgcikgewogICAgICAgIHJldHVybiBjYWxjKGwsIHIsIDAsIDAsIHNpemUpOwogICAgfQoKfTsKCnZvaWQgc29sdmUoKSB7CgogICAgY2luID4+IG4gPj4gcTsKCiAgICBzZ1RyZWUgc2VnOwogICAgc2VnLmluaXQobik7CgogICAgd2hpbGUocS0tKSB7CgogICAgICAgIGludCBvcDtjaW4+Pm9wOwoKICAgICAgICBpZihvcCA9PSAxKSB7CgogICAgICAgICAgICBsbCBsLHIsdmFsO2Npbj4+bD4+cj4+dmFsOwogICAgICAgICAgICBzZWcubW9kaWZ5KGwscix2YWwpOwoKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGxsIGwscjtjaW4gPj4gbD4+IHI7CiAgICAgICAgICAgIGNvdXQ8PHNlZy5nZXRNaW4obCxyKTw8IlxuIjsKICAgICAgICB9CgogICAgfQoKfQoKaW50IG1haW4oKSB7CiAgICBsbCB0ID0gMTsKICAgIC8vY2luID4+IHQ7CiAgICB3aGlsZSAodC0tKSB7CiAgICAgICAgc29sdmUoKTsKICAgIH0KICAgIHJldHVybiAwOwp9Cg==