#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int binarni(int a)
{
    string as="";
    int d = 0;
    while(pow(2,d)<a)
        d++;
    while(d!=-1)
    {
        if(a>=pow(2,d)){
        as+="1";
        a-=pow(2,d);
        }
        else
        as+="0";
        d--;
    }
    return stoi(as);
}
bool uporedi(int a,int b)
{
  a=binarni(a);
  b=binarni(b);
  return a&b>a^b;
}
int fun(int L,int R,vector<int>c)
{
    int pom=0;
    int maxi=0;
    for(int i = L;i<R;i++)
    {
        if(uporedi(c[i-1],c[i]))
        {
            pom++;
        }
        else{
            maxi=max(maxi,pom);
            pom=0;
        }
    }
    maxi=max(pom,maxi);
    return maxi+1;
}
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    int a,b,L,R;
    cin>>a>>b;
    vector<int>c;
    int pom;
    while(a!=0)
    {
        cin>>pom;
        c.push_back(pom);
        a--;
    }
    while(b!=0)
    {
        cin>>L>>R;
        cout<<fun(L,R,c)<<"\n";
        b--;
    }
    return 0;
}