rt,
#include<bits/stdc++.h>
#define rep(i,a,b) for(int i=a;i<=b;i++)
#define per(i,a,b) for(int i=a;i>=b;i--)
#define endl '\n'
#define pii pair<int,int>
#define fi first
#define se second
typedef long long ll;
typedef unsigned long long ull;
typedef double lf;
typedef long double ld;
using namespace std;
struct query{
ll l,r;
}qu[50005];
ll n,q,f[1048576],a[50005],ans[50005],g[50005];
signed main(){
ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
cin>>n>>q;
rep(i,1,1048576)
f[i]=f[i-1]^i;
rep(i,1,n)
cin>>a[i];
rep(i,1,q)
cin>>qu[i].l>>qu[i].r;
rep(i,1,n){
per(j,i,1)
g[j]=max(max(g[j+1],g[j]),f[max(a[i],a[j])]^f[min(a[i],a[j])-1]);
rep(j,1,q)
if(qu[j].r==i)
ans[j]=g[qu[j].l];
}
rep(i,1,q)
cout<<ans[i]<<endl;
return 0;
}
不是O2的锅