#include <bits/stdc++.h>

using namespace std;

long long int mennyi(long long int szam)
{
    long long int index=0;
    while(szam>1)
    {
        szam>>=1;
        index++;
    }

    return index;
}

int main()
{

    long long int n,q;



    cin>>n>>q;

    vector<long long int> a(n);

    for(long long int i=0; i<n; i++)
    {
        cin>>a[i];
    }

    vector<long long int> b(n);

    for(long long int i=0; i<n; i++)
    {
        b[i]=mennyi(a[i]);
    }

    int bitmax=25;

    vector<vector<int>> prefix(bitmax, vector<int>(n+1,0));

    for(long long int bit=0; bit<bitmax; bit++)
    {
        for(long long int i=0; i<n; i++)
        {
            if(b[i]==bit)
            {
                prefix[bit][i+1]=prefix[bit][i]+1;

            }
            else
            {
                prefix[bit][i+1]=prefix[bit][i];
            }
        }
    }

    long long int bal, jobb;
    map<long long int,long long int> szamol;

    for(long long int i=0; i<q; i++)
    {
        cin>>bal>>jobb;

       long long int nagy=0;

       for(long long int bit=0; bit<bitmax; bit++)
       {
            long long int darab=prefix[bit][jobb]-prefix[bit][bal-1];
            nagy=max(nagy, darab);
       }




       cout<<nagy<<endl;



    }


    return 0;
}