#include <bits/stdc++.h>
using namespace std;
const int maxn = 1000500;
map<int, int> last;
struct que {
  int l, r, num;
};
que ans[maxn];
int n, i, pre[maxn], tt[maxn], Q, t, s[maxn], ansl[maxn], qz[maxn];
bool cmp(que a, que b) {
  if (a.r < b.r) return true;
  return false;
}
int lowbit(int a) { return (a & (-a)); }
void add(int a, int b) {
  while (a <= n + 1) {
    tt[a] ^= b;
    a += lowbit(a);
  }
}
int getans(int a) {
  int temp = 0;
  while (a > 0) {
    temp ^= tt[a];
    a -= lowbit(a);
  }
  return temp;
}
int main() {
  scanf("%d", &n);
  for (i = 1; i <= n; i++) {
    scanf("%d", &s[i]);
    pre[i] = last[s[i]];
    last[s[i]] = i;
    qz[i] = qz[i - 1] ^ s[i];
  }
  scanf("%d", &Q);
  for (i = 1; i <= Q; i++) {
    scanf("%d%d", &ans[i].l, &ans[i].r);
    ans[i].num = i;
  }
  sort(ans + 1, ans + 1 + Q, cmp);
  t = 0;
  for (i = 1; i <= Q; i++) {
    while (t < ans[i].r) {
      t++;
      add(pre[t] + 1, s[t]);
      add(t + 1, s[t]);
    }
    ansl[ans[i].num] = getans(ans[i].l) ^ qz[ans[i].l - 1] ^ qz[ans[i].r];
  }
  for (i = 1; i <= Q; i++) printf("%d\n", ansl[i]);
}
