#include <bits/stdc++.h>
using namespace std;
template <typename T> void setmax(T& a, T b) {
if (b > a) a = b;
}
template <typename T> void setmin(T& a, T b) {
if (b < a) a = b;
}
using ll = long long;
const ll INF = 1e18;
const int MAXN = 1.1e5;
int N, Q;
ll A[MAXN];
ll B[MAXN];
const int S = 250;
const int MAXC = MAXN / S + 10;
pair<ll, ll> evts[MAXN];
ll pref[MAXN];
ll suff[MAXN];
struct range_t {
int l, r;
ll val;
range_t(int l_, int r_) : l(l_), r(r_), val(0) {
// initialize here
for (int i = l; i < r; i++) {
evts[i] = {B[i] - A[i], B[i]};
}
sort(evts + l, evts + r);
{
ll curVal = INF;
for (int i = l; i < r; i++) {
setmin(curVal, evts[i].second - evts[i].first);
pref[i] = curVal;
}
}
{
ll curVal = INF;
for (int i = r-1; i >= l; i--) {
setmin(curVal, evts[i].second);
suff[i] = curVal;
}
}
}
void add(int d) {
val += d;
}
void finalize() {
for (int i = l; i < r; i++) {
A[i] += val;
}
}
ll query() {
int pos = int(lower_bound(evts + l, evts + r, make_pair(val, 0ll)) - evts);
ll ans = INF;
if (l < pos) {
setmin(ans, pref[pos-1] + val);
}
if (pos < r) {
setmin(ans, suff[pos]);
}
return ans;
}
};
struct query_t {
int t, l, r, x;
};
int main() {
ios::sync_with_stdio(0), cin.tie(0);
cin >> N >> Q;
for (int i = 0; i < N; i++) {
cin >> A[i] >> B[i];
}
for (int st = 0; st < Q; st += S) {
int M = min(Q, st+S) - st;
vector<query_t> queries(M);
vector<int> pts; pts.reserve(2*M);
for (auto& it : queries) {
cin >> it.t >> it.l >> it.r;
it.l--;
if (it.t == 1) {
cin >> it.x;
} else if (it.t == 2) {
// do nothing
} else assert(false);
pts.push_back(it.l);
pts.push_back(it.r);
}
sort(pts.begin(), pts.end());
pts.erase(unique(pts.begin(), pts.end()), pts.end());
int K = int(pts.size());
assert(K > 1);
vector<range_t> range; range.reserve(K-1);
for (int i = 0; i+1 < K; i++) {
range.push_back(range_t(pts[i], pts[i+1]));
}
for (auto it : queries) {
int l = int(lower_bound(pts.begin(), pts.end(), it.l) - pts.begin());
int r = int(lower_bound(pts.begin(), pts.end(), it.r) - pts.begin());
if (it.t == 1) {
for (int i = l; i < r; i++) {
range[i].add(it.x);
}
} else if (it.t == 2) {
ll ans = INF;
for (int i = l; i < r; i++) {
setmin(ans, range[i].query());
}
cout << ans << '\n';
} else assert(false);
}
for (int i = 0; i+1 < K; i++) {
range[i].finalize();
}
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdm9pZCBzZXRtYXgoVCYgYSwgVCBiKSB7CglpZiAoYiA+IGEpIGEgPSBiOwp9CnRlbXBsYXRlIDx0eXBlbmFtZSBUPiB2b2lkIHNldG1pbihUJiBhLCBUIGIpIHsKCWlmIChiIDwgYSkgYSA9IGI7Cn0KCnVzaW5nIGxsID0gbG9uZyBsb25nOwpjb25zdCBsbCBJTkYgPSAxZTE4OwoKY29uc3QgaW50IE1BWE4gPSAxLjFlNTsKaW50IE4sIFE7CmxsIEFbTUFYTl07CmxsIEJbTUFYTl07Cgpjb25zdCBpbnQgUyA9IDI1MDsKY29uc3QgaW50IE1BWEMgPSBNQVhOIC8gUyArIDEwOwoKcGFpcjxsbCwgbGw+IGV2dHNbTUFYTl07CmxsIHByZWZbTUFYTl07CmxsIHN1ZmZbTUFYTl07CgpzdHJ1Y3QgcmFuZ2VfdCB7CglpbnQgbCwgcjsKCWxsIHZhbDsKCQoJcmFuZ2VfdChpbnQgbF8sIGludCByXykgOiBsKGxfKSwgcihyXyksIHZhbCgwKSB7CgkJLy8gaW5pdGlhbGl6ZSBoZXJlCgoJCWZvciAoaW50IGkgPSBsOyBpIDwgcjsgaSsrKSB7CgkJCWV2dHNbaV0gPSB7QltpXSAtIEFbaV0sIEJbaV19OwoJCX0KCQlzb3J0KGV2dHMgKyBsLCBldnRzICsgcik7CgoJCXsKCQkJbGwgY3VyVmFsID0gSU5GOwoJCQlmb3IgKGludCBpID0gbDsgaSA8IHI7IGkrKykgewoJCQkJc2V0bWluKGN1clZhbCwgZXZ0c1tpXS5zZWNvbmQgLSBldnRzW2ldLmZpcnN0KTsKCQkJCXByZWZbaV0gPSBjdXJWYWw7CgkJCX0KCQl9CgkJewoJCQlsbCBjdXJWYWwgPSBJTkY7CgkJCWZvciAoaW50IGkgPSByLTE7IGkgPj0gbDsgaS0tKSB7CgkJCQlzZXRtaW4oY3VyVmFsLCBldnRzW2ldLnNlY29uZCk7CgkJCQlzdWZmW2ldID0gY3VyVmFsOwoJCQl9CgkJfQoJfQoKCXZvaWQgYWRkKGludCBkKSB7CgkJdmFsICs9IGQ7Cgl9CgoJdm9pZCBmaW5hbGl6ZSgpIHsKCQlmb3IgKGludCBpID0gbDsgaSA8IHI7IGkrKykgewoJCQlBW2ldICs9IHZhbDsKCQl9Cgl9CgoJbGwgcXVlcnkoKSB7CgkJaW50IHBvcyA9IGludChsb3dlcl9ib3VuZChldnRzICsgbCwgZXZ0cyArIHIsIG1ha2VfcGFpcih2YWwsIDBsbCkpIC0gZXZ0cyk7CgkJbGwgYW5zID0gSU5GOwoJCWlmIChsIDwgcG9zKSB7CgkJCXNldG1pbihhbnMsIHByZWZbcG9zLTFdICsgdmFsKTsKCQl9CgkJaWYgKHBvcyA8IHIpIHsKCQkJc2V0bWluKGFucywgc3VmZltwb3NdKTsKCQl9CgkJcmV0dXJuIGFuczsKCX0KfTsKCnN0cnVjdCBxdWVyeV90IHsKCWludCB0LCBsLCByLCB4Owp9OwoKaW50IG1haW4oKSB7Cglpb3M6OnN5bmNfd2l0aF9zdGRpbygwKSwgY2luLnRpZSgwKTsKCgljaW4gPj4gTiA+PiBROwoJZm9yIChpbnQgaSA9IDA7IGkgPCBOOyBpKyspIHsKCQljaW4gPj4gQVtpXSA+PiBCW2ldOwoJfQoKCWZvciAoaW50IHN0ID0gMDsgc3QgPCBROyBzdCArPSBTKSB7CgkJaW50IE0gPSBtaW4oUSwgc3QrUykgLSBzdDsKCQl2ZWN0b3I8cXVlcnlfdD4gcXVlcmllcyhNKTsKCQl2ZWN0b3I8aW50PiBwdHM7IHB0cy5yZXNlcnZlKDIqTSk7CgkJZm9yIChhdXRvJiBpdCA6IHF1ZXJpZXMpIHsKCQkJY2luID4+IGl0LnQgPj4gaXQubCA+PiBpdC5yOwoJCQlpdC5sLS07CgkJCWlmIChpdC50ID09IDEpIHsKCQkJCWNpbiA+PiBpdC54OwoJCQl9IGVsc2UgaWYgKGl0LnQgPT0gMikgewoJCQkJLy8gZG8gbm90aGluZwoJCQl9IGVsc2UgYXNzZXJ0KGZhbHNlKTsKCQkJcHRzLnB1c2hfYmFjayhpdC5sKTsKCQkJcHRzLnB1c2hfYmFjayhpdC5yKTsKCQl9CgoJCXNvcnQocHRzLmJlZ2luKCksIHB0cy5lbmQoKSk7CgkJcHRzLmVyYXNlKHVuaXF1ZShwdHMuYmVnaW4oKSwgcHRzLmVuZCgpKSwgcHRzLmVuZCgpKTsKCgkJaW50IEsgPSBpbnQocHRzLnNpemUoKSk7CgkJYXNzZXJ0KEsgPiAxKTsKCQl2ZWN0b3I8cmFuZ2VfdD4gcmFuZ2U7IHJhbmdlLnJlc2VydmUoSy0xKTsKCQlmb3IgKGludCBpID0gMDsgaSsxIDwgSzsgaSsrKSB7CgkJCXJhbmdlLnB1c2hfYmFjayhyYW5nZV90KHB0c1tpXSwgcHRzW2krMV0pKTsKCQl9CgoJCWZvciAoYXV0byBpdCA6IHF1ZXJpZXMpIHsKCQkJaW50IGwgPSBpbnQobG93ZXJfYm91bmQocHRzLmJlZ2luKCksIHB0cy5lbmQoKSwgaXQubCkgLSBwdHMuYmVnaW4oKSk7CgkJCWludCByID0gaW50KGxvd2VyX2JvdW5kKHB0cy5iZWdpbigpLCBwdHMuZW5kKCksIGl0LnIpIC0gcHRzLmJlZ2luKCkpOwoJCQlpZiAoaXQudCA9PSAxKSB7CgkJCQlmb3IgKGludCBpID0gbDsgaSA8IHI7IGkrKykgewoJCQkJCXJhbmdlW2ldLmFkZChpdC54KTsKCQkJCX0KCQkJfSBlbHNlIGlmIChpdC50ID09IDIpIHsKCQkJCWxsIGFucyA9IElORjsKCQkJCWZvciAoaW50IGkgPSBsOyBpIDwgcjsgaSsrKSB7CgkJCQkJc2V0bWluKGFucywgcmFuZ2VbaV0ucXVlcnkoKSk7CgkJCQl9CgkJCQljb3V0IDw8IGFucyA8PCAnXG4nOwoJCQl9IGVsc2UgYXNzZXJ0KGZhbHNlKTsKCQl9CgoJCWZvciAoaW50IGkgPSAwOyBpKzEgPCBLOyBpKyspIHsKCQkJcmFuZ2VbaV0uZmluYWxpemUoKTsKCQl9Cgl9CgoJcmV0dXJuIDA7Cn0K