#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const int N = 1e5+5;
const int K = 30;
int n, q, a[N];
int st[4*N][K], lz[4*N];
void pull(int id) {
for (int k = 0; k < K; k++) st[id][k] = st[id << 1][k] + st[id << 1 | 1][k];
}
void apply(int id, int l, int r, int x) {
int len = r - l + 1;
for (int k = 0; k < K; k++)
if ((x >> k) & 1) st[id][k] = len - st[id][k];
lz[id] ^= x;
}
void push(int id, int l, int r) {
if (!lz[id]) return;
int mid = (l + r) >> 1;
apply(id << 1, l, mid, lz[id]);
apply(id << 1 | 1, mid + 1, r, lz[id]);
lz[id] = 0;
}
void build(int id, int l, int r) {
if (l == r) {
apply(id, l, l, 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 u, int v, int x) {
if (v < l || r < u) return;
if (u <= l && r <= v) {
apply(id, l, r, x);
return;
}
push(id, l, r);
int mid = (l + r) >> 1;
update(id << 1, l, mid, u, v, x);
update(id << 1 | 1, mid + 1, r, u, v, x);
pull(id);
}
void query(int id, int l, int r, int u, int v, int* res) {
if (v < l || r < u) return;
if (u <= l && r <= v) {
for (int k = 0; k < K; k++) res[k] += st[id][k];
return;
}
push(id, l, r);
int mid = (l + r) >> 1;
query(id << 1, l, mid, u, v, res);
query(id << 1 | 1, mid + 1, r, u, v, res);
}
void solve() {
cin >> n >> q;
for (int i = 1; i <= n; i++) cin >> a[i];
build(1, 1, n);
while (q--) {
int op, l, r, x; cin >> op >> l >> r >> x;
if (op == 1) {
update(1, 1, n, l, r, x);
} else {
int cnt[K] = {0};
query(1, 1, n, l, r, cnt);
int ans = 0;
for (int k = 0; k < K; k++) {
int bit = (x >> k) & 1, res = 0;
if (op == 2) res = bit ^ (cnt[k] & 1);
else if (op == 3) res = bit && (cnt[k] == r - l + 1);
else if (op == 4) res = bit || (cnt[k] > 0);
if (res) ans |= (1 << k);
}
cout << ans << '\n';
}
}
}
int main() {
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
int tests = 1; // cin >> tests;
while (tests--) solve();
#ifdef LOCAL
cerr << "\nTime elapsed: " << clock() << " ms.\n";
#endif
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp1c2luZyBsbCA9IGxvbmcgbG9uZzsKCmNvbnN0IGludCBOID0gMWU1KzU7CmNvbnN0IGludCBLID0gMzA7CgppbnQgbiwgcSwgYVtOXTsKCmludCBzdFs0Kk5dW0tdLCBsels0Kk5dOwoKdm9pZCBwdWxsKGludCBpZCkgewogICAgZm9yIChpbnQgayA9IDA7IGsgPCBLOyBrKyspIHN0W2lkXVtrXSA9IHN0W2lkIDw8IDFdW2tdICsgc3RbaWQgPDwgMSB8IDFdW2tdOwp9Cgp2b2lkIGFwcGx5KGludCBpZCwgaW50IGwsIGludCByLCBpbnQgeCkgewogICAgaW50IGxlbiA9IHIgLSBsICsgMTsKICAgIGZvciAoaW50IGsgPSAwOyBrIDwgSzsgaysrKQogICAgICAgIGlmICgoeCA+PiBrKSAmIDEpIHN0W2lkXVtrXSA9IGxlbiAtIHN0W2lkXVtrXTsKICAgIGx6W2lkXSBePSB4Owp9Cgp2b2lkIHB1c2goaW50IGlkLCBpbnQgbCwgaW50IHIpIHsKICAgIGlmICghbHpbaWRdKSByZXR1cm47CiAgICBpbnQgbWlkID0gKGwgKyByKSA+PiAxOwogICAgYXBwbHkoaWQgPDwgMSwgbCwgbWlkLCBseltpZF0pOwogICAgYXBwbHkoaWQgPDwgMSB8IDEsIG1pZCArIDEsIHIsIGx6W2lkXSk7CiAgICBseltpZF0gPSAwOwp9Cgp2b2lkIGJ1aWxkKGludCBpZCwgaW50IGwsIGludCByKSB7CiAgICBpZiAobCA9PSByKSB7CiAgICAgICAgYXBwbHkoaWQsIGwsIGwsIGFbbF0pOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIGludCBtaWQgPSAobCArIHIpID4+IDE7CiAgICBidWlsZChpZCA8PCAxLCBsLCBtaWQpOwogICAgYnVpbGQoaWQgPDwgMSB8IDEsIG1pZCArIDEsIHIpOwogICAgcHVsbChpZCk7Cn0KCnZvaWQgdXBkYXRlKGludCBpZCwgaW50IGwsIGludCByLCBpbnQgdSwgaW50IHYsIGludCB4KSB7CiAgICBpZiAodiA8IGwgfHwgciA8IHUpIHJldHVybjsKICAgIGlmICh1IDw9IGwgJiYgciA8PSB2KSB7CiAgICAgICAgYXBwbHkoaWQsIGwsIHIsIHgpOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIHB1c2goaWQsIGwsIHIpOwogICAgaW50IG1pZCA9IChsICsgcikgPj4gMTsKICAgIHVwZGF0ZShpZCA8PCAxLCBsLCBtaWQsIHUsIHYsIHgpOwogICAgdXBkYXRlKGlkIDw8IDEgfCAxLCBtaWQgKyAxLCByLCB1LCB2LCB4KTsKICAgIHB1bGwoaWQpOwp9Cgp2b2lkIHF1ZXJ5KGludCBpZCwgaW50IGwsIGludCByLCBpbnQgdSwgaW50IHYsIGludCogcmVzKSB7CiAgICBpZiAodiA8IGwgfHwgciA8IHUpIHJldHVybjsKICAgIGlmICh1IDw9IGwgJiYgciA8PSB2KSB7CiAgICAgICAgZm9yIChpbnQgayA9IDA7IGsgPCBLOyBrKyspIHJlc1trXSArPSBzdFtpZF1ba107CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgcHVzaChpZCwgbCwgcik7CiAgICBpbnQgbWlkID0gKGwgKyByKSA+PiAxOwogICAgcXVlcnkoaWQgPDwgMSwgbCwgbWlkLCB1LCB2LCByZXMpOwogICAgcXVlcnkoaWQgPDwgMSB8IDEsIG1pZCArIDEsIHIsIHUsIHYsIHJlcyk7Cn0KCnZvaWQgc29sdmUoKSB7CiAgICBjaW4gPj4gbiA+PiBxOwogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSBjaW4gPj4gYVtpXTsKICAgIGJ1aWxkKDEsIDEsIG4pOwogICAgd2hpbGUgKHEtLSkgewogICAgICAgIGludCBvcCwgbCwgciwgeDsgY2luID4+IG9wID4+IGwgPj4gciA+PiB4OwogICAgICAgIGlmIChvcCA9PSAxKSB7CiAgICAgICAgICAgIHVwZGF0ZSgxLCAxLCBuLCBsLCByLCB4KTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBpbnQgY250W0tdID0gezB9OwogICAgICAgICAgICBxdWVyeSgxLCAxLCBuLCBsLCByLCBjbnQpOwogICAgICAgICAgICBpbnQgYW5zID0gMDsKICAgICAgICAgICAgZm9yIChpbnQgayA9IDA7IGsgPCBLOyBrKyspIHsKICAgICAgICAgICAgICAgIGludCBiaXQgPSAoeCA+PiBrKSAmIDEsIHJlcyA9IDA7CiAgICAgICAgICAgICAgICBpZiAob3AgPT0gMikgcmVzID0gYml0IF4gKGNudFtrXSAmIDEpOwogICAgICAgICAgICAgICAgZWxzZSBpZiAob3AgPT0gMykgcmVzID0gYml0ICYmIChjbnRba10gPT0gciAtIGwgKyAxKTsKICAgICAgICAgICAgICAgIGVsc2UgaWYgKG9wID09IDQpIHJlcyA9IGJpdCB8fCAoY250W2tdID4gMCk7CiAgICAgICAgICAgICAgICBpZiAocmVzKSBhbnMgfD0gKDEgPDwgayk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY291dCA8PCBhbnMgPDwgJ1xuJzsKICAgICAgICB9CiAgICB9Cn0KCmludCBtYWluKCkgewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTsgY2luLnRpZSgwKTsgY291dC50aWUoMCk7CgogICAgaW50IHRlc3RzID0gMTsgLy8gY2luID4+IHRlc3RzOwogICAgd2hpbGUgKHRlc3RzLS0pIHNvbHZlKCk7CgogICAgI2lmZGVmIExPQ0FMCiAgICBjZXJyIDw8ICJcblRpbWUgZWxhcHNlZDogIiA8PCBjbG9jaygpIDw8ICIgbXMuXG4iOwogICAgI2VuZGlmCgogICAgcmV0dXJuIDA7Cn0K