#include <bits/stdc++.h>
using namespace std;
const long long MAX = 2500000000;
const int inf = 123456789;
const double EPS = 1e-9;
const double PII = 2 * asin(1.0);
const long long mod = 1e9 + 7;
int double_cmp(double x, double y = 0, double tol = EPS) {
  return (x <= y + tol) ? (x + tol < y) ? -1 : 0 : 1;
}
const int N = 1e5;
int n;
int bit[2 * N];
void buildNormal() {
  for (int i = n - 1; i > 0; --i) bit[i] = bit[i << 1] + bit[i << 1 | 1];
}
int seg[21][2 * N], lazy[21][N];
int h;
void calc(int p, int e) {
  seg[e][p] = seg[e][p << 1] + seg[e][p << 1 | 1];
  if (lazy[e][p]) seg[e][p] = bit[p] - seg[e][p];
}
void apply(int p, int e) {
  seg[e][p] = bit[p] - seg[e][p];
  if (p < n) lazy[e][p] ^= 1;
}
void build(int l, int r, int e) {
  for (l += n, r += n - 1; l > 1;) {
    l >>= 1, r >>= 1;
    for (int i = r; i >= l; --i) calc(i, e);
  }
}
void push(int l, int r, int e) {
  int s = h;
  for (l += n, r += n - 1; s > 0; --s) {
    for (int i = l >> s; i <= r >> s; ++i)
      if (lazy[e][i] != 0) {
        apply(i << 1, e);
        apply(i << 1 | 1, e);
        lazy[e][i] = 0;
      }
  }
}
void modify(int l, int r, int e) {
  push(l, l + 1, e);
  push(r - 1, r, e);
  int l0 = l, r0 = r;
  for (l += n, r += n; l < r; l >>= 1, r >>= 1) {
    if (l & 1) apply(l++, e);
    if (r & 1) apply(--r, e);
  }
  build(l0, l0 + 1, e);
  build(r0 - 1, r0, e);
}
long long query(int l, int r, int e) {
  push(l, l + 1, e);
  push(r - 1, r, e);
  long long res = 0LL;
  for (l += n, r += n; l < r; l >>= 1, r >>= 1) {
    if (l & 1) res += seg[e][l++];
    if (r & 1) res += seg[e][--r];
  }
  return (1 << e) * res;
}
int main() {
  scanf("%d", &n);
  for (int i = 0; i < n; ++i) bit[i + n] = 1;
  buildNormal();
  h = sizeof(int) * 8 - __builtin_clz(n);
  for (int i = 0; i < n; ++i) {
    int aux;
    scanf("%d", &aux);
    for (int j = 0; j < 21; ++j) {
      if (aux & (1 << j)) seg[j][i + n] = 1;
    }
  }
  for (int i = 0; i < 21; ++i) build(0, n, i);
  int m;
  scanf("%d", &m);
  while (m--) {
    int aux;
    scanf("%d", &aux);
    if (aux == 1) {
      int a, b;
      scanf("%d%d", &a, &b);
      a--;
      long long saida = 0LL;
      for (int i = 0; i < 21; ++i) saida += query(a, b, i);
      cout << saida << endl;
    } else {
      int a, b, c;
      scanf("%d%d%d", &a, &b, &c);
      a--;
      for (int i = 0; i < 21; ++i) {
        if (c & (1 << i)) modify(a, b, i);
      }
    }
  }
}
