#include <iostream>
#include <vector>
#include <algorithm>
#include <map>
using namespace std;


int main()
{
    int n,q;
    cin >> n >> q;

    vector<int> niz(n);
    map<tuple<int, int>, bool> prefiksi;

    for(int i =0;i<n;i++)
    {
        cin >> niz[i];
    }// unos

    int isto=0;
    int hor=0;
    for(int i =0;i<n;i++)
    {
        for(int j =i;j<n;j++)
        {
            isto=niz[i]&niz[j];
            hor=niz[i]^niz[j];

            prefiksi[{i,j}]=isto>hor;
            //cout << niz[i] << " " << niz[j] << " ->" << prefiksi[{i,j}] << "\n";
        }
        //cout << endl;
    }

    int pocetak, kraj, maks=0, trenutni=0;
    while(q>0)// sva pitanja
    {
        cin >> pocetak >> kraj;
        // nakon svakog unosa idemo da vidimo koj je
        maks=0;
        for(int i =pocetak;i<=kraj;i++)
        {
            trenutni=0;
            for(int j =i;j<=kraj;j++)
                trenutni+=prefiksi[{i,j}];// sabiram prefikse
            maks=max(maks,trenutni);// ako je vise nego maks pamtim

        }

        cout << maks<< "\n";

        q--;
    }



    return 0;

}