#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const int N = 1e5+5;
int n, m, a[N];
int mx[4*N];
ll st[4*N];
void pull(int id) {
mx[id] = max(mx[id << 1], mx[id << 1 | 1]);
st[id] = st[id << 1] + st[id << 1 | 1];
}
void build(int id, int l, int r) {
if (l == r) {
st[id] = mx[id] = a[l];
return;
}
int mid = (l + r) >> 1;
build(id << 1, l, mid);
build(id << 1 | 1, mid + 1, r);
pull(id);
}
void update(int id, int l, int r, int k, int x) {
if (l == r) {
st[id] = mx[id] = x;
return;
}
int mid = (l + r) >> 1;
if (k <= mid) update(id << 1, l, mid, k, x);
else update(id << 1 | 1, mid + 1, r, k, x);
pull(id);
}
void update_mod(int id, int l, int r, int u, int v, int x) {
if (v < l || r < u || mx[id] < x) return;
if (l == r) {
st[id] %= x;
mx[id] %= x;
return;
}
int mid = (l + r) >> 1;
update_mod(id << 1, l, mid, u, v, x);
update_mod(id << 1 | 1, mid + 1, r, u, v, x);
pull(id);
}
ll query(int id, int l, int r, int u, int v) {
if (v < l || r < u) return 0;
if (u <= l && r <= v) return st[id];
int mid = (l + r) >> 1;
return query(id << 1, l, mid, u, v) + query(id << 1 | 1, mid + 1, r, u, v);
}
void solve() {
cin >> n >> m;
for (int i = 1; i <= n; i++) cin >> a[i];
build(1, 1, n);
while (m--) {
int op; cin >> op;
if (op == 1) {
int l, r; cin >> l >> r;
cout << query(1, 1, n, l, r) << '\n';
} else if (op == 2) {
int l, r, x; cin >> l >> r >> x;
update_mod(1, 1, n, l, r, x);
} else if (op == 3) {
int k, x; cin >> k >> x;
update(1, 1, n, k, x);
}
}
}
int main() {
ios_base::sync_with_stdio(false); cin.tie(NULL);
int tests = 1; // cin >> tests;
while (tests--) solve();
#ifdef LOCAL
cerr << "\nTime elapsed: " << 1.0 * clock() / CLOCKS_PER_SEC << " s.\n";
#endif
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp1c2luZyBsbCA9IGxvbmcgbG9uZzsKCmNvbnN0IGludCBOID0gMWU1KzU7CgppbnQgbiwgbSwgYVtOXTsKaW50IG14WzQqTl07CmxsIHN0WzQqTl07Cgp2b2lkIHB1bGwoaW50IGlkKSB7CiAgICBteFtpZF0gPSBtYXgobXhbaWQgPDwgMV0sIG14W2lkIDw8IDEgfCAxXSk7CiAgICBzdFtpZF0gPSBzdFtpZCA8PCAxXSArIHN0W2lkIDw8IDEgfCAxXTsKfQoKdm9pZCBidWlsZChpbnQgaWQsIGludCBsLCBpbnQgcikgewogICAgaWYgKGwgPT0gcikgewogICAgICAgIHN0W2lkXSA9IG14W2lkXSA9IGFbbF07CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgaW50IG1pZCA9IChsICsgcikgPj4gMTsKICAgIGJ1aWxkKGlkIDw8IDEsIGwsIG1pZCk7CiAgICBidWlsZChpZCA8PCAxIHwgMSwgbWlkICsgMSwgcik7CiAgICBwdWxsKGlkKTsKfQoKdm9pZCB1cGRhdGUoaW50IGlkLCBpbnQgbCwgaW50IHIsIGludCBrLCBpbnQgeCkgewogICAgaWYgKGwgPT0gcikgewogICAgICAgIHN0W2lkXSA9IG14W2lkXSA9IHg7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgaW50IG1pZCA9IChsICsgcikgPj4gMTsKICAgIGlmIChrIDw9IG1pZCkgdXBkYXRlKGlkIDw8IDEsIGwsIG1pZCwgaywgeCk7CiAgICBlbHNlIHVwZGF0ZShpZCA8PCAxIHwgMSwgbWlkICsgMSwgciwgaywgeCk7CiAgICBwdWxsKGlkKTsKfQoKdm9pZCB1cGRhdGVfbW9kKGludCBpZCwgaW50IGwsIGludCByLCBpbnQgdSwgaW50IHYsIGludCB4KSB7CiAgICBpZiAodiA8IGwgfHwgciA8IHUgfHwgbXhbaWRdIDwgeCkgcmV0dXJuOwogICAgaWYgKGwgPT0gcikgewogICAgICAgIHN0W2lkXSAlPSB4OwogICAgICAgIG14W2lkXSAlPSB4OwogICAgICAgIHJldHVybjsKICAgIH0KICAgIGludCBtaWQgPSAobCArIHIpID4+IDE7CiAgICB1cGRhdGVfbW9kKGlkIDw8IDEsIGwsIG1pZCwgdSwgdiwgeCk7CiAgICB1cGRhdGVfbW9kKGlkIDw8IDEgfCAxLCBtaWQgKyAxLCByLCB1LCB2LCB4KTsKICAgIHB1bGwoaWQpOwp9CgpsbCBxdWVyeShpbnQgaWQsIGludCBsLCBpbnQgciwgaW50IHUsIGludCB2KSB7CiAgICBpZiAodiA8IGwgfHwgciA8IHUpIHJldHVybiAwOwogICAgaWYgKHUgPD0gbCAmJiByIDw9IHYpIHJldHVybiBzdFtpZF07CiAgICBpbnQgbWlkID0gKGwgKyByKSA+PiAxOwogICAgcmV0dXJuIHF1ZXJ5KGlkIDw8IDEsIGwsIG1pZCwgdSwgdikgKyBxdWVyeShpZCA8PCAxIHwgMSwgbWlkICsgMSwgciwgdSwgdik7Cn0KCnZvaWQgc29sdmUoKSB7CiAgICBjaW4gPj4gbiA+PiBtOwogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSBjaW4gPj4gYVtpXTsKICAgIGJ1aWxkKDEsIDEsIG4pOwogICAgd2hpbGUgKG0tLSkgewogICAgICAgIGludCBvcDsgY2luID4+IG9wOwogICAgICAgIGlmIChvcCA9PSAxKSB7CiAgICAgICAgICAgIGludCBsLCByOyBjaW4gPj4gbCA+PiByOwogICAgICAgICAgICBjb3V0IDw8IHF1ZXJ5KDEsIDEsIG4sIGwsIHIpIDw8ICdcbic7CiAgICAgICAgfSBlbHNlIGlmIChvcCA9PSAyKSB7CiAgICAgICAgICAgIGludCBsLCByLCB4OyBjaW4gPj4gbCA+PiByID4+IHg7CiAgICAgICAgICAgIHVwZGF0ZV9tb2QoMSwgMSwgbiwgbCwgciwgeCk7CiAgICAgICAgfSBlbHNlIGlmIChvcCA9PSAzKSB7CiAgICAgICAgICAgIGludCBrLCB4OyBjaW4gPj4gayA+PiB4OwogICAgICAgICAgICB1cGRhdGUoMSwgMSwgbiwgaywgeCk7CiAgICAgICAgfQogICAgfQp9CgppbnQgbWFpbigpIHsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOyBjaW4udGllKE5VTEwpOwogICAgCiAgICBpbnQgdGVzdHMgPSAxOyAvLyBjaW4gPj4gdGVzdHM7CiAgICB3aGlsZSAodGVzdHMtLSkgc29sdmUoKTsKCiAgICAjaWZkZWYgTE9DQUwKICAgIGNlcnIgPDwgIlxuVGltZSBlbGFwc2VkOiAiIDw8IDEuMCAqIGNsb2NrKCkgLyBDTE9DS1NfUEVSX1NFQyA8PCAiIHMuXG4iOwogICAgI2VuZGlmCiAgICByZXR1cm4gMDsKfQo=