#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

#define ubrzaj ios::sync_with_stdio(false); cin.tie(NULL);
typedef long long ll;

int msb(int x)
{
    if(x==0)
    {
        return -1;
    }
    return 31 - __builtin_clz(x);
}

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

    vector<int> a(n);
    vector<vector<int>> pozicije(31);

    for (int i=0; i<n; i++)
    {
        cin>>a[i];
        int bit=msb(a[i]);
        if(bit != -1)
        {
            pozicije[bit].push_back(i + 1);
        }
    }

    while (q--)
    {
        int l, r;
        cin>>l>>r;
        int maks=0;
        for (int b=0; b<31; b++)
        {
            if(pozicije[b].empty())
            {
                continue;
            }
            auto it1=lower_bound(pozicije[b].begin(), pozicije[b].end(), l);
            auto it2=upper_bound(pozicije[b].begin(), pozicije[b].end(), r);
            int broj=distance(it1, it2);
            if(broj>maks)
            {
                maks=broj;
            }
        }
        cout<<maks<<"\n";
    }
    
    return 0;
}