#include <bits/stdc++.h>
using namespace std;
long long a[100005], b[400005][21], x[400005], g[21], po[50];
long long q(long long n, long long l, long long r, long long l1, long long r1) {
  long long m = (l + r) >> 1, k = n << 1, a1 = 0, a2 = 0, kk, j;
  if (l == l1 && r == r1) {
    kk = n / 2;
    j = 0;
    while (kk != 0) {
      j = j ^ x[kk];
      kk /= 2;
    }
    kk = j;
    j = 0;
    while (kk != 0) {
      if (kk % 2 == 1) g[j]++;
      j++;
      kk /= 2;
    }
    for (int i = 0; i <= 20; i++) {
      if (g[i] == 0)
        a1 += b[n][i] * po[i];
      else
        a1 += (r1 - l1 + 1 - b[n][i]) * po[i];
      g[i] = 0;
    }
    return a1;
  }
  if (l1 <= m) a1 = q(k, l, m, l1, min(r1, m));
  if (r1 >= m + 1) a2 = q(k + 1, m + 1, r, max(l1, m + 1), r1);
  return a1 + a2;
}
long long u(long long n, long long l, long long r, long long l1, long long r1,
            long long v) {
  long long m = (l + r) >> 1, k = n << 1, kk, j;
  if (l == l1 && r == r1) {
    x[n] = x[n] ^ v;
    kk = v;
    j = 0;
    while (kk != 0) {
      if (kk % 2 == 1) g[j]++;
      j++;
      kk /= 2;
    }
    for (int i = 0; i <= 20; i++) {
      if (g[i] > 0) b[n][i] = (r - l + 1) - b[n][i];
      g[i] = 0;
    }
    return 1;
  }
  if (l1 <= m) u(k, l, m, l1, min(r1, m), v);
  if (r1 >= m + 1) u(k + 1, m + 1, r, max(l1, m + 1), r1, v);
  for (int i = 0; i <= 20; i++) b[n][i] = b[n << 1][i] + b[(n << 1) + 1][i];
  kk = x[n];
  j = 0;
  while (kk != 0) {
    if (kk % 2 == 1) g[j]++;
    j++;
    kk /= 2;
  }
  for (int i = 0; i <= 20; i++) {
    if (g[i] > 0) b[n][i] = (r - l + 1) - b[n][i];
    g[i] = 0;
  }
  return 1;
}
long long s(long long n, long long l, long long r) {
  long long m = (l + r) >> 1, k, j;
  if (l == r) {
    k = a[l];
    j = 0;
    while (k != 0) {
      if (k % 2 == 1) b[n][j]++;
      j++;
      k /= 2;
    }
    return 1;
  }
  s(n << 1, l, m);
  s((n << 1) + 1, m + 1, r);
  for (int i = 0; i <= 20; i++) b[n][i] = b[n << 1][i] + b[(n << 1) + 1][i];
  return 1;
}
int main() {
  ios_base::sync_with_stdio(false);
  long long i, j, n, m, k, l, r, qu, mul = 1;
  cin >> n;
  for (i = 1; i <= n; i++) cin >> a[i];
  for (i = 0; mul <= 1000000; i++) {
    po[i] = mul;
    mul *= 2;
  }
  s(1, 1, n);
  cin >> qu;
  for (i = 1; i <= qu; i++) {
    cin >> j >> l >> r;
    if (j == 1) {
      j = q(1, 1, n, l, r);
      cout << j << endl;
    } else {
      cin >> j;
      u(1, 1, n, l, r, j);
    }
  }
  return 0;
}
