#include <iostream>
#include <vector>

using namespace std;

inline bool dobri(const int &a, const int &b)
{
    return (a&b) > (a^b);
}

int main(void)
{
    int n, q;
    cin >> n >> q;
    
    vector<int> brojevi(n);
    for (int i = 0; i < n; ++i)
      cin >> brojevi[i];
    
    while (q-- > 0)
    {
        int L, R;
        cin >> L >> R;
        
        --L; --R;
        int najduzi_dobar_niz = 1;
        int broj_dobrih_elem = 0;
        for (int i = L; i < R; ++i)
        {
            for (int j = i+1; j <= R; ++j)
            {
                if (dobri(brojevi[i], brojevi[j]))
                {
                  ++broj_dobrih_elem;
                  // cout << brojevi[i] << " - " << brojevi[j] << '\n';
                }
            }
            if (broj_dobrih_elem > najduzi_dobar_niz)
              najduzi_dobar_niz = broj_dobrih_elem;
        }
        cout << najduzi_dobar_niz << "\n";
    }
    
    // int L, R;
    // cin >> L >> R;
    // --L; --R;
    
    // for (int i = L; i < R; ++i)
    // {
    //     for (int j = i+1; j <= R; ++j)
    //     {
    //         cout << brojevi[i] << ' ' << brojevi[j]
    //         << (dobri(brojevi[i], brojevi[j]) ? " -- !\n" : "\n");
    //     }
    //     // if (broj_dobrih_elem > najduzi_dobar_niz)
    //     //   najduzi_dobar_niz = broj_dobrih_elem;
    // }
    
    return 0;
}