#include <bits/stdc++.h>
using namespace std;
const long long int N = 1e5 + 10, N2 = 2e5 + 10, delta = 46639, mod = 1e9 + 7,
                    oo = 1e18, LOG = 20, SQ = 300;
const long double PI = 3.141592653589793;
long long int sum[N << 2][LOG];
bool lazy[N << 2][LOG];
inline void shift(long long int ind, long long int b, long long int mid,
                  long long int e, long long int id) {
  if (!lazy[id][ind]) return;
  lazy[2 * id][ind] ^= 1;
  lazy[2 * id + 1][ind] ^= 1;
  sum[2 * id][ind] = mid - b - sum[2 * id][ind];
  sum[2 * id + 1][ind] = e - mid - sum[2 * id + 1][ind];
  lazy[id][ind] = 0;
}
void add(long long int ind, long long int l, long long int r,
         long long int b = 0, long long int e = N, long long int id = 1) {
  if (l <= b && e <= r) {
    sum[id][ind] = e - b - sum[id][ind];
    lazy[id][ind] ^= 1;
    return;
  }
  long long int mid = (b + e) / 2;
  shift(ind, b, mid, e, id);
  if (l < mid) add(ind, l, r, b, mid, 2 * id);
  if (mid < r) add(ind, l, r, mid, e, 2 * id + 1);
  sum[id][ind] = sum[2 * id][ind] + sum[2 * id + 1][ind];
}
long long int get(long long int ind, long long int l, long long int r,
                  long long int b = 0, long long int e = N,
                  long long int id = 1) {
  if (l <= b && e <= r) return sum[id][ind];
  long long int mid = (b + e) / 2, ans = 0;
  shift(ind, b, mid, e, id);
  if (l < mid) ans += get(ind, l, r, b, mid, 2 * id);
  if (mid < r) ans += get(ind, l, r, mid, e, 2 * id + 1);
  return ans;
}
int32_t main() {
  ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
  long long int n;
  cin >> n;
  for (long long int i = 0; i < n; i++) {
    long long int x;
    cin >> x;
    for (long long int j = 0; j < LOG; j++)
      if (x & (1ll << j)) add(j, i, i + 1);
  }
  long long int q;
  cin >> q;
  while (q--) {
    long long int t, l, r;
    cin >> t >> l >> r;
    l--;
    if (--t) {
      long long int val;
      cin >> val;
      for (long long int i = 0; i < LOG; i++)
        if (val & (1ll << i)) add(i, l, r);
    } else {
      long long int ans = 0;
      for (long long int i = 0; i < LOG; i++) ans += get(i, l, r) * (1ll << i);
      cout << ans << '\n';
    }
  }
  return 0;
}
