#include <bits/stdc++.h>
using namespace std;
#define int long long
#define double long double
#define endl "\n"
const int mod=1e9+7;
//samo za x>=1
int ceolog2(int x){
    if(x==1)return 0;
    else{
        int k=-1;
        while(x>0){
            x/=2;
            k++;
        }
        return k;
    }
}
void solve(){
    int n, q;cin>>n>>q;
    vector<int>v(n);
    for(int i=0;i<n;i++){
        cin>>v[i];
        v[i]=log2(v[i]);
    }
    //okej ovo dobro zapisuje floor(log_2(x))
    /*vector<int>b(n); //nekad mozda sporije ali cesce brze (nas briga samo worstcase jer smo pesimisticni)
    for(int i=0;i<n;i++){
        int c=0;
        for(int j=i;j<n;j++){
            if(v[j]!=v[i]){b[i]=c;break;}
            c++;
        }
    }
    b[n-1]=1;*/
    //mene neko fr sprda, ja se mucim sa ovim vec neko vreme misleci da su uzastopni el a zapravo mogu koji god
    int l ,r;
    for(int i=0;i<q;i++){
        cin>>l>>r;
        map<int, int>f;
        for(int i=l-1;i<r;i++){f[v[i]]++;}
        int o=1;
        for(auto x : f){
            o=max(x.second, o);
        }
        cout<<o<<endl;
    }
}
int32_t main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0);cout.tie(0);
    int t;t=1;//cin>>t;
    while(t--)solve();
    return 0;
}