#include <bits/stdc++.h>
#pragma GCC optimize("O2")
#pragma GCC optimize("unroll-loops")
#pragma GCC target("avx,avx2,sse,sse2,fma,tune=native")
using namespace std;
const long long SIZE = 1e5 + 4, S2 = 1e6 * 2, MOD = 1e9 + 7,
                INF = 1e9 * 1e9 * 2 + 100, P = 28;
vector<long long> vec;
long long ans[5001][5001];
int main() {
  cin.tie(0);
  cout.tie(0);
  ios_base::sync_with_stdio(0);
  ;
  long long n;
  cin >> n;
  vec.resize(n);
  for (int i = 0; i < n; i++) cin >> vec[i];
  for (int i = 0; i < n; i++) ans[i][i] = vec[i];
  for (int i = 1; i < n; i++) {
    for (int j = 0; j < n - i; j++) {
      ans[j][j + i] = ans[j][j + i - 1] ^ ans[j + 1][j + i];
    }
  }
  for (int i = 1; i < n; i++) {
    for (int j = 0; j < n - i; j++) {
      ans[j][j + i] =
          max(ans[j][j + i], max(ans[j + 1][j + i], ans[j][j + i - 1]));
    }
  }
  long long q;
  cin >> q;
  while (q--) {
    long long l, r;
    cin >> l >> r;
    cout << ans[l - 1][r - 1] << "\n";
  }
  return 0;
}
