#include <bits/stdc++.h>
using namespace std;
namespace IO {
const int MT = 4e7;
char IO_BUF[MT];
int IO_PTR, IO_SZ;
void begin() {
  IO_PTR = 0;
  IO_SZ = fread(IO_BUF, 1, MT, stdin);
}
template <typename T>
inline bool read(T& t) {
  while (IO_PTR < IO_SZ && IO_BUF[IO_PTR] != '-' &&
         (IO_BUF[IO_PTR] < '0' || IO_BUF[IO_PTR] > '9'))
    IO_PTR++;
  if (IO_PTR >= IO_SZ) return false;
  bool sgn = false;
  if (IO_BUF[IO_PTR] == '-') sgn = true, IO_PTR++;
  for (t = 0; IO_PTR < IO_SZ && '0' <= IO_BUF[IO_PTR] && IO_BUF[IO_PTR] <= '9';
       IO_PTR++)
    t = t * 10 + IO_BUF[IO_PTR] - '0';
  if (sgn) t = -t;
  return true;
}
inline bool scan_s(char s[]) {
  while (IO_PTR < IO_SZ && (IO_BUF[IO_PTR] == ' ' || IO_BUF[IO_PTR] == '\n'))
    IO_PTR++;
  if (IO_PTR >= IO_SZ) return false;
  int len = 0;
  while (IO_PTR < IO_SZ && IO_BUF[IO_PTR] != ' ' && IO_BUF[IO_PTR] != '\n')
    s[len++] = IO_BUF[IO_PTR], IO_PTR++;
  s[len] = '\0';
  return true;
}
template <typename T>
void print(T x) {
  static char s[33], *s1;
  s1 = s;
  if (!x) *s1++ = '0';
  if (x < 0) putchar('-'), x = -x;
  while (x) *s1++ = (x % 10 + '0'), x /= 10;
  while (s1-- != s) putchar(*s1);
}
template <typename T>
void println(T x) {
  print(x);
  putchar('\n');
}
};  // namespace IO
using namespace IO;
const int maxn = 1e6 + 7;
int pre[maxn];
int a[maxn];
int l[maxn];
int r[maxn];
int ans[maxn];
int sa[maxn];
int main() {
  begin();
  int n, m;
  read(n);
  read(m);
  for (int i = 1; i < maxn; i++) {
    pre[i] = i ^ pre[i - 1];
  }
  for (int i = 1; i <= n; i++) {
    read(a[i]);
  }
  for (int i = 1; i <= m; i++) {
    read(l[i]);
    read(r[i]);
  }
  for (int i = 1; i <= n; i++) {
    int mx = -1;
    for (int j = i; j <= n; j++) {
      int tmp = pre[a[i]] ^ pre[a[j]];
      if (a[i] < a[j])
        tmp ^= a[i];
      else
        tmp ^= a[j];
      mx = max(mx, tmp);
      sa[j] = mx;
    }
    for (int j = 1; j <= m; j++) {
      if (l[j] <= i && i <= r[j]) {
        ans[j] = max(ans[j], sa[r[j]]);
      }
    }
  }
  for (int i = 1; i <= m; i++) {
    println(ans[i]);
  }
  return 0;
}
