#include <bits/stdc++.h>
int a[5007], n, q;
int x[5007][5007], y[5007][5007];
void run() {
  int i, j, l, r;
  while (scanf("%d", &n) != EOF) {
    for (i = 0; i < n; i++) {
      scanf("%d", &a[i]);
    }
    for (i = 0; i < n; i++) {
      x[i][i] = a[i];
      y[i][i] = a[i];
    }
    for (i = 2; i <= n; i++) {
      for (j = 0; j < n - i + 1; j++) {
        x[j][j + i - 1] = x[j][j + i - 2] ^ x[j + 1][j + i - 1];
        y[j][j + i - 1] =
            ((y[j][j + i - 2]) > (y[j + 1][j + i - 1]) ? (y[j][j + i - 2])
                                                       : (y[j + 1][j + i - 1]));
        y[j][j + i - 1] =
            ((y[j][j + i - 1]) > (x[j][j + i - 1]) ? (y[j][j + i - 1])
                                                   : (x[j][j + i - 1]));
      }
    }
    scanf("%d", &q);
    for (i = 0; i < q; i++) {
      scanf("%d%d", &l, &r);
      printf("%d\n", y[l - 1][r - 1]);
    }
  }
}
int main() {
  run();
  return 0;
}
