#include<bits/stdc++.h>
using namespace std;

int N,X;
int Q;
int L,R;
int tre[40][500'005];
int prefix[40][500'005];

int main(){
    scanf("%d%d",&N,&Q);
    for(int i=1;i<=N;++i){
        scanf("%d",&X);
        int impo=0;
        while(X){
            X>>=1;
            ++impo;
        }
        ++tre[impo][i];
    }
    for(int b=1;i<32;++b)
        for(int i=1;i<=N;++i)
            prefiks[b][i]=prefiks[b][i-1]+tre[b][i];
    while(Q--){
        scanf("%d%d",&L,&R);
        int sol=0;
        for(int b=0,rem=L-R+1;b<32;++b){
            rem-=prefiks[b+1][R]-prefiks[b+1][L-1];
            sol=max(sol,max(prefiks[b][R]-prefiks[b][L-1],rem);
        }
        printf("%d\n",sol);
    }
    return 0;
}