// Author: pppssslc
// Date: 15/08/2026
#include<bits/stdc++.h>
using namespace std;
template<class X, class Y> void mini(X &x, const Y &y){
x = min(x, y);
}
template<class X, class Y> void maxi(X &x, const Y &y){
x = max(x, y);
}
typedef string str;
typedef long long ll;
typedef unsigned long long ull;
typedef __int128 i128;
typedef double db;
typedef long double ld;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
typedef pair<ld, ld> pldld;
typedef pair<db, db> pdd;
typedef pair<char, char> pcc;
typedef vector<int> vi;
typedef vector<ll> vl;
typedef vector<char> vc;
typedef vector<pii> vpii;
typedef vector<pll> vpll;
typedef vector<vector<int>> vii;
typedef vector<vector<ll>> vll;
typedef vector<vector<char>> vcc;
typedef map<int, int> mpii;
typedef map<ll, ll> mpll;
typedef set<int> si;
typedef set<ll> sl;
typedef complex<ld> cd;
#define se second
#define fi first
#define Rep(i, l, r, x) for(int i = l; i < (int)r; i += x)
#define Repd(i, l, r, x) for(int i = l; i > (int)r; i -= x)
#define For(i, l, r, x) for(int i = l; i <= (int)r; i += x)
#define Ford(i, l, r, x) for(int i = l; i >= (int)r; i -= x)
#define Fore(x, a) for(auto x: a)
#define pb push_back
#define pf push_front
#define ppb pop_back
#define ppf pop_front
#define ins insert
#define era erase
#define upb upper_bound
#define lwb lower_bound
#define all(a) a.begin(), a.end()
const db PI = acos(-1);
const ll inf = 1e18 + 1;
const int mod = 1e9 + 7;
const int maxn = 2e5 + 5;
int n, q;
ll bit[maxn], st[maxn * 4], d[maxn], a[maxn];
ll gcd(ll a, ll b){
if(!a) return abs(b);
if(!b) return abs(a);
return gcd(b, a % b);
}
ll get(int k){
ll ret = 0;
Ford(i, k, 1, i&-i) ret += bit[i];
return ret + 1;
}
void upd(int k, int v){
For(i, k, n, i&-i) bit[i] += v;
}
ll get(int id, int l, int r, int u, int v){
if(r < u || v < l) return 0;
if(u <= l && r <= v) return st[id];
int m = (l + r) >> 1;
ll L = get(id * 2, l, m, u, v);
ll R = get(id * 2 + 1, m + 1, r, u, v);
return gcd(L, R);
}
void upd(int id, int l, int r, int p, int v){
if(p < l || r < p) return;
if(l == r){
st[id] += v;
return;
}
int m = (l + r) >> 1;
upd(id * 2, l, m, p, v);
upd(id * 2 + 1, m + 1, r, p, v);
st[id] = gcd(st[id * 2], st[id * 2 + 1]);
}
signed main(){
ios_base::sync_with_stdio(false);
cin.tie(nullptr); cout.tie(nullptr);
cin >> n >> q;
For(i, 1, q, 1){
int t, l, r; cin >> t >> l >> r;
if(t == 1){
int x; cin >> x;
upd(l, x); upd(r + 1, -x);
upd(1, 1, n, l, x);
upd(1, 1, n, r + 1, -x);
}else{
cout << gcd(get(l), get(1, 1, n, l + 1, r)) << '\n';
}
}
cerr << "TIME ELAPSED: " << 1.0 * clock() / CLOCKS_PER_SEC << "s.\n";
return 0;
}
Ly8gQXV0aG9yOiBwcHBzc3NsYwovLyBEYXRlOiAxNS8wOC8yMDI2CiNpbmNsdWRlPGJpdHMvc3RkYysrLmg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdGVtcGxhdGU8Y2xhc3MgWCwgY2xhc3MgWT4gdm9pZCBtaW5pKFggJngsIGNvbnN0IFkgJnkpewoJeCA9IG1pbih4LCB5KTsKfQoKdGVtcGxhdGU8Y2xhc3MgWCwgY2xhc3MgWT4gdm9pZCBtYXhpKFggJngsIGNvbnN0IFkgJnkpewoJeCA9IG1heCh4LCB5KTsKfQoKdHlwZWRlZiBzdHJpbmcgc3RyOwp0eXBlZGVmIGxvbmcgbG9uZyBsbDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgdWxsOwp0eXBlZGVmIF9faW50MTI4IGkxMjg7CnR5cGVkZWYgZG91YmxlIGRiOwp0eXBlZGVmIGxvbmcgZG91YmxlIGxkOwp0eXBlZGVmIHBhaXI8aW50LCBpbnQ+IHBpaTsKdHlwZWRlZiBwYWlyPGxsLCBsbD4gcGxsOwp0eXBlZGVmIHBhaXI8bGQsIGxkPiBwbGRsZDsKdHlwZWRlZiBwYWlyPGRiLCBkYj4gcGRkOwp0eXBlZGVmIHBhaXI8Y2hhciwgY2hhcj4gcGNjOwp0eXBlZGVmIHZlY3RvcjxpbnQ+IHZpOwp0eXBlZGVmIHZlY3RvcjxsbD4gdmw7CnR5cGVkZWYgdmVjdG9yPGNoYXI+IHZjOwp0eXBlZGVmIHZlY3RvcjxwaWk+IHZwaWk7CnR5cGVkZWYgdmVjdG9yPHBsbD4gdnBsbDsKdHlwZWRlZiB2ZWN0b3I8dmVjdG9yPGludD4+IHZpaTsKdHlwZWRlZiB2ZWN0b3I8dmVjdG9yPGxsPj4gdmxsOwp0eXBlZGVmIHZlY3Rvcjx2ZWN0b3I8Y2hhcj4+IHZjYzsKdHlwZWRlZiBtYXA8aW50LCBpbnQ+IG1waWk7CnR5cGVkZWYgbWFwPGxsLCBsbD4gbXBsbDsKdHlwZWRlZiBzZXQ8aW50PiBzaTsKdHlwZWRlZiBzZXQ8bGw+IHNsOwp0eXBlZGVmIGNvbXBsZXg8bGQ+IGNkOwoKI2RlZmluZSBzZSBzZWNvbmQKI2RlZmluZSBmaSBmaXJzdAojZGVmaW5lIFJlcChpLCBsLCByLCB4KSBmb3IoaW50IGkgPSBsOyBpIDwgKGludClyOyBpICs9IHgpCiNkZWZpbmUgUmVwZChpLCBsLCByLCB4KSBmb3IoaW50IGkgPSBsOyBpID4gKGludClyOyBpIC09IHgpCiNkZWZpbmUgRm9yKGksIGwsIHIsIHgpIGZvcihpbnQgaSA9IGw7IGkgPD0gKGludClyOyBpICs9IHgpCiNkZWZpbmUgRm9yZChpLCBsLCByLCB4KSBmb3IoaW50IGkgPSBsOyBpID49IChpbnQpcjsgaSAtPSB4KQojZGVmaW5lIEZvcmUoeCwgYSkgZm9yKGF1dG8geDogYSkKI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSBwZiBwdXNoX2Zyb250CiNkZWZpbmUgcHBiIHBvcF9iYWNrCiNkZWZpbmUgcHBmIHBvcF9mcm9udAojZGVmaW5lIGlucyBpbnNlcnQKI2RlZmluZSBlcmEgZXJhc2UKI2RlZmluZSB1cGIgdXBwZXJfYm91bmQKI2RlZmluZSBsd2IgbG93ZXJfYm91bmQKI2RlZmluZSBhbGwoYSkgYS5iZWdpbigpLCBhLmVuZCgpCgpjb25zdCBkYiBQSSA9IGFjb3MoLTEpOwpjb25zdCBsbCBpbmYgPSAxZTE4ICsgMTsKY29uc3QgaW50IG1vZCA9IDFlOSArIDc7CmNvbnN0IGludCBtYXhuID0gMmU1ICsgNTsKCmludCBuLCBxOwpsbCBiaXRbbWF4bl0sIHN0W21heG4gKiA0XSwgZFttYXhuXSwgYVttYXhuXTsKCmxsIGdjZChsbCBhLCBsbCBiKXsKCWlmKCFhKSByZXR1cm4gYWJzKGIpOwoJaWYoIWIpIHJldHVybiBhYnMoYSk7CglyZXR1cm4gZ2NkKGIsIGEgJSBiKTsKfQoKbGwgZ2V0KGludCBrKXsKCWxsIHJldCA9IDA7CglGb3JkKGksIGssIDEsIGkmLWkpIHJldCArPSBiaXRbaV07CglyZXR1cm4gcmV0ICsgMTsKfQoKdm9pZCB1cGQoaW50IGssIGludCB2KXsKCUZvcihpLCBrLCBuLCBpJi1pKSBiaXRbaV0gKz0gdjsKfQoKbGwgZ2V0KGludCBpZCwgaW50IGwsIGludCByLCBpbnQgdSwgaW50IHYpewoJaWYociA8IHUgfHwgdiA8IGwpIHJldHVybiAwOwoJaWYodSA8PSBsICYmIHIgPD0gdikgcmV0dXJuIHN0W2lkXTsKCWludCBtID0gKGwgKyByKSA+PiAxOwoJbGwgTCA9IGdldChpZCAqIDIsIGwsIG0sIHUsIHYpOwoJbGwgUiA9IGdldChpZCAqIDIgKyAxLCBtICsgMSwgciwgdSwgdik7CglyZXR1cm4gZ2NkKEwsIFIpOwp9Cgp2b2lkIHVwZChpbnQgaWQsIGludCBsLCBpbnQgciwgaW50IHAsIGludCB2KXsKCWlmKHAgPCBsIHx8IHIgPCBwKSByZXR1cm47CglpZihsID09IHIpewoJCXN0W2lkXSArPSB2OwoJCXJldHVybjsKCX0KCWludCBtID0gKGwgKyByKSA+PiAxOwoJdXBkKGlkICogMiwgbCwgbSwgcCwgdik7Cgl1cGQoaWQgKiAyICsgMSwgbSArIDEsIHIsIHAsIHYpOwoJc3RbaWRdID0gZ2NkKHN0W2lkICogMl0sIHN0W2lkICogMiArIDFdKTsKfQoKc2lnbmVkIG1haW4oKXsKCWlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwoJY2luLnRpZShudWxscHRyKTsgY291dC50aWUobnVsbHB0cik7CgljaW4gPj4gbiA+PiBxOwoJRm9yKGksIDEsIHEsIDEpewoJCWludCB0LCBsLCByOyBjaW4gPj4gdCA+PiBsID4+IHI7CgkJaWYodCA9PSAxKXsKCQkJaW50IHg7IGNpbiA+PiB4OwoJCQl1cGQobCwgeCk7IHVwZChyICsgMSwgLXgpOwoJCQl1cGQoMSwgMSwgbiwgbCwgeCk7CgkJCXVwZCgxLCAxLCBuLCByICsgMSwgLXgpOwoJCX1lbHNlewoJCQljb3V0IDw8IGdjZChnZXQobCksIGdldCgxLCAxLCBuLCBsICsgMSwgcikpIDw8ICdcbic7CgkJfQoJfQoJY2VyciA8PCAiVElNRSBFTEFQU0VEOiAiIDw8IDEuMCAqIGNsb2NrKCkgLyBDTE9DS1NfUEVSX1NFQyA8PCAicy5cbiI7CglyZXR1cm4gMDsKfQ==