#include <bits/stdc++.h>
using namespace std;
#define F first
#define S second
#define int long long
#define Ali ios::sync_with_stdio(false), cin.tie(0), cout.tie(0)
const int N = 5e5 + 7;
const int MOD = 1e9 + 7;
int t[N][23], a[N], p[N][23];
void build(int v, int l, int r, int bit){
if (l == r){
t[v][bit] = (a[l] >> bit) & 1;
return;
}
int mid = (l + r) / 2;
build(v * 2, l, mid, bit);
build(v * 2 + 1, mid + 1, r, bit);
t[v][bit] = t[v * 2][bit] + t[v * 2 + 1][bit];
}
void push(int v, int l, int r, int bit){
if (p[v][bit] && l != r){
int mid = (r + l) / 2;
p[v * 2][bit] ^= 1;
p[v * 2 + 1][bit] ^= 1;
t[v * 2][bit] = mid - l + 1 - t[v * 2][bit];
t[v * 2 + 1][bit] = r - mid - t[v * 2 + 1][bit];
p[v][bit] = 0;
}
}
void upd(int v, int l, int r, int tl, int tr, int bit){
if (l > tr || r < tl) return;
if (tl <= l && r <= tr){
t[v][bit] = r - l + 1 - t[v][bit];
p[v][bit] ^= 1;
return;
}
push(v, l, r, bit);
int mid = (l + r) / 2;
upd(v * 2, l, mid, tl, tr, bit);
upd(v * 2 + 1, mid + 1, r, tl, tr, bit);
t[v][bit] = t[v * 2][bit] + t[v * 2 + 1][bit];
}
int get(int v, int l, int r, int tl, int tr, int bit){
push(v, l, r, bit);
if (l > tr || r < tl) return 0;
if (tl <= l && r <= tr) return t[v][bit];
int mid = (r + l) / 2;
return get(v * 2, l, mid, tl, tr, bit) + get(v * 2 + 1, mid + 1, r, tl, tr, bit);
}
void abb() {
int n;
cin >> n;
for (int i = 1; i <= n; ++i){
cin >> a[i];
}for (int i = 0; i <= 20; ++i) build(1, 1, n, i);
int q; cin >> q;
for (int i = 1; i <= q; ++i){
int type, l, r;
cin >> type >> l >> r;
if (type == 1){
int sum = 0;
for (int j = 0; j <= 20; ++j) sum += (get(1, 1, n, l, r, j) * (1ll << j));
cout << sum << '\n';
}else{
int x; cin >> x;
for (int j = 0; j <= 20; ++j){
if (x & (1ll << j)) upd(1, 1, n, l, r, j);
}
}
}
}
signed main(){
Ali;
int T = 1;
// cin >> T;
while(T--){
abb();
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgojZGVmaW5lIEYgZmlyc3QKI2RlZmluZSBTIHNlY29uZAojZGVmaW5lIGludCBsb25nIGxvbmcKI2RlZmluZSBBbGkgaW9zOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpLCBjaW4udGllKDApLCBjb3V0LnRpZSgwKQoKY29uc3QgaW50IE4gPSA1ZTUgKyA3Owpjb25zdCBpbnQgTU9EID0gMWU5ICsgNzsKaW50IHRbTl1bMjNdLCBhW05dLCBwW05dWzIzXTsKCnZvaWQgYnVpbGQoaW50IHYsIGludCBsLCBpbnQgciwgaW50IGJpdCl7CglpZiAobCA9PSByKXsKCQl0W3ZdW2JpdF0gPSAoYVtsXSA+PiBiaXQpICYgMTsKCQlyZXR1cm47Cgl9CglpbnQgbWlkID0gKGwgKyByKSAvIDI7CglidWlsZCh2ICogMiwgbCwgbWlkLCBiaXQpOwoJYnVpbGQodiAqIDIgKyAxLCBtaWQgKyAxLCByLCBiaXQpOwoJdFt2XVtiaXRdID0gdFt2ICogMl1bYml0XSArIHRbdiAqIDIgKyAxXVtiaXRdOwp9Cgp2b2lkIHB1c2goaW50IHYsIGludCBsLCBpbnQgciwgaW50IGJpdCl7CglpZiAocFt2XVtiaXRdICYmIGwgIT0gcil7CgkJaW50IG1pZCA9IChyICsgbCkgLyAyOwoJCXBbdiAqIDJdW2JpdF0gXj0gMTsKCQlwW3YgKiAyICsgMV1bYml0XSBePSAxOwoJCXRbdiAqIDJdW2JpdF0gPSBtaWQgLSBsICsgMSAtIHRbdiAqIDJdW2JpdF07CgkJdFt2ICogMiArIDFdW2JpdF0gPSByIC0gbWlkIC0gdFt2ICogMiArIDFdW2JpdF07CgkJcFt2XVtiaXRdID0gMDsKCX0KfQoKdm9pZCB1cGQoaW50IHYsIGludCBsLCBpbnQgciwgaW50IHRsLCBpbnQgdHIsIGludCBiaXQpewoJaWYgKGwgPiB0ciB8fCByIDwgdGwpIHJldHVybjsKCWlmICh0bCA8PSBsICYmIHIgPD0gdHIpewoJCXRbdl1bYml0XSA9IHIgLSBsICsgMSAtIHRbdl1bYml0XTsKCQlwW3ZdW2JpdF0gXj0gMTsKCQlyZXR1cm47Cgl9CglwdXNoKHYsIGwsIHIsIGJpdCk7CglpbnQgbWlkID0gKGwgKyByKSAvIDI7Cgl1cGQodiAqIDIsIGwsIG1pZCwgdGwsIHRyLCBiaXQpOwoJdXBkKHYgKiAyICsgMSwgbWlkICsgMSwgciwgdGwsIHRyLCBiaXQpOwoJdFt2XVtiaXRdID0gdFt2ICogMl1bYml0XSArIHRbdiAqIDIgKyAxXVtiaXRdOwp9CgppbnQgZ2V0KGludCB2LCBpbnQgbCwgaW50IHIsIGludCB0bCwgaW50IHRyLCBpbnQgYml0KXsKCXB1c2godiwgbCwgciwgYml0KTsKCWlmIChsID4gdHIgfHwgciA8IHRsKSByZXR1cm4gMDsKCWlmICh0bCA8PSBsICYmIHIgPD0gdHIpIHJldHVybiB0W3ZdW2JpdF07CglpbnQgbWlkID0gKHIgKyBsKSAvIDI7CglyZXR1cm4gZ2V0KHYgKiAyLCBsLCBtaWQsIHRsLCB0ciwgYml0KSArIGdldCh2ICogMiArIDEsIG1pZCArIDEsIHIsIHRsLCB0ciwgYml0KTsKfQoKdm9pZCBhYmIoKSB7CglpbnQgbjsKCWNpbiA+PiBuOwoJZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgKytpKXsKCQljaW4gPj4gYVtpXTsKCX1mb3IgKGludCBpID0gMDsgaSA8PSAyMDsgKytpKSBidWlsZCgxLCAxLCBuLCBpKTsKCWludCBxOyBjaW4gPj4gcTsKCWZvciAoaW50IGkgPSAxOyBpIDw9IHE7ICsraSl7CgkJaW50IHR5cGUsIGwsIHI7CgkJY2luID4+IHR5cGUgPj4gbCA+PiByOwoJCWlmICh0eXBlID09IDEpewoJCQlpbnQgc3VtID0gMDsKCQkJZm9yIChpbnQgaiA9IDA7IGogPD0gMjA7ICsraikgc3VtICs9IChnZXQoMSwgMSwgbiwgbCwgciwgaikgKiAoMWxsIDw8IGopKTsKCQkJY291dCA8PCBzdW0gPDwgJ1xuJzsKCQl9ZWxzZXsKCQkJaW50IHg7IGNpbiA+PiB4OwoJCQlmb3IgKGludCBqID0gMDsgaiA8PSAyMDsgKytqKXsKCQkJCWlmICh4ICYgKDFsbCA8PCBqKSkgdXBkKDEsIDEsIG4sIGwsIHIsIGopOwoJCQl9CgkJfQoJfQp9CnNpZ25lZCBtYWluKCl7CiAgICBBbGk7CiAgICBpbnQgVCA9IDE7Ci8vICAgIGNpbiA+PiBUOwogICAgd2hpbGUoVC0tKXsKICAgICAgICBhYmIoKTsKICAgIH0KfQ==