#include <bits/stdc++.h>

using namespace std;

vector < vector <int>> v(1000000, {32, 0});
int stependvojke(int x)
{
    int cnt=0;
    while (x>0)
    {
        x=(x-x%2)/2;
        cnt++;
    }
    return cnt-1;
}
void bits(int x, int j)
{
    for (int i=0; i<32; i++)
    {
        if (i==stependvojke(x))
            if (j==0)
                v[i][j]=1;
            else
                v[i][j]=v[i][j-1]+1;
        else
            if (j==0)
                v[i][j]=0;
            else
                v[i][j]=v[i][j-1];

    }
}


int main()
{
    int n, q, x;
    cin >> n >> q;
    vector <int> ans(n);
    map<int, int> m;
    for (int i=0; i<n; i++)
    {
        cin >> x;
        bits(x, i);
    }
    for (int i=0; i<q; i++)
    {
        int l, r, maks=0;
        cin >> l >> r;
        for (int i=0; i<32; i++)
            if (maks < v[i][r-1]-v[i][l-1])
                maks=v[i][r-1]-v[i][l-1];
        cout << maks << endl;

    }
    /*for (int i=0; i<n; i++)
    {
     for (int j=0; j<n; j++)
            cout << v[j][i];
    cout << endl;
    }*/


}#include <bits/stdc++.h>

using namespace std;

vector < vector <int>> v(1000000, {32, 0});
int stependvojke(int x)
{
    int cnt=0;
    while (x>0)
    {
        x=(x-x%2)/2;
        cnt++;
    }
    return cnt-1;
}
void bits(int x, int j)
{
    for (int i=0; i<32; i++)
    {
        if (i==stependvojke(x))
            if (j==0)
                v[i][j]=1;
            else
                v[i][j]=v[i][j-1]+1;
        else
            if (j==0)
                v[i][j]=0;
            else
                v[i][j]=v[i][j-1];

    }
}


int main()
{
    int n, q, x;
    cin >> n >> q;
    vector <int> ans(n);
    map<int, int> m;
    for (int i=0; i<n; i++)
    {
        cin >> x;
        bits(x, i);
    }
    for (int i=0; i<q; i++)
    {
        int l, r, maks=0;
        cin >> l >> r;
        for (int i=0; i<32; i++)
            if (maks < v[i][r-1]-v[i][l-1])
                maks=v[i][r-1]-v[i][l-1];
        cout << maks << endl;

    }
    /*for (int i=0; i<n; i++)
    {
     for (int j=0; j<n; j++)
            cout << v[j][i];
    cout << endl;
    }*/


}