#include <bits/stdc++.h>
using namespace std;
int n, a[5005], x[5005][5005], mx[5005][5005];
int main() {
  scanf("%d", &n);
  for (int i = 0; i < n; i++) scanf("%d", &a[i]);
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < n - i; j++) {
      if (i == 0)
        x[j][j] = a[j];
      else
        x[j][j + i] = x[j][j + i - 1] ^ x[j + 1][j + i];
    }
  }
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < n - i; j++) {
      if (i == 0)
        mx[j][j] = x[j][j];
      else
        mx[j][j + i] =
            max(max(mx[j][j + i - 1], mx[j + 1][j + i]), x[j][j + i]);
    }
  }
  int q;
  scanf("%d", &q);
  while (q--) {
    int l, r;
    scanf("%d%d", &l, &r);
    l--;
    r--;
    printf("%d\n", mx[l][r]);
  }
}
