#include <bits/stdc++.h>
using namespace std;
const int Inf = (int)1e9;
const long long InfL = (long long)1e18;
const int MaxN = (int)5e3 + 5;
int a[MaxN], dp[MaxN][MaxN];
void preproc(int n) {
  for (int i = 0; i < n; i++) dp[0][i] = a[i];
  for (int i = 1; i < n; i++) {
    for (int j = i; j < n; j++) dp[i][j] = dp[i - 1][j - 1] ^ dp[i - 1][j];
  }
  for (int i = 1; i < n; i++) {
    for (int j = i; j < n; j++) {
      dp[i][j] = max(dp[i][j], max(dp[i - 1][j - 1], dp[i - 1][j]));
    }
  }
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(nullptr);
  cout.tie(nullptr);
  int n, q;
  cin >> n;
  for (int i = 0; i < n; i++) cin >> a[i];
  preproc(n);
  cin >> q;
  for (int i = 0; i < q; i++) {
    int a, b;
    cin >> a >> b;
    --a, --b;
    cout << dp[b - a][b] << '\n';
  }
  return 0;
}
