#include <bits/stdc++.h>

using namespace std;
#define int long long
signed main()
{
ios::sync_with_stdio(0);cin.tie(0);
int n,q;
cin>>n>>q;
vector<int>a(n);
for(int i = 0;i<n;i++)
cin>>a[i];
int pref[31][n];
int bit[31][n];
for(int i = 0;i<31;i++)
for(int j = 0;j<n;j++){
pref[i][j]=0;
bit[i][j]=0;
}
int help=pow(2,31);
for(int i = 0;i<n;i++){
int w=help,cnt=31;
while(w>0){

if(a[i]<w&&a[i]>=w/2){
bit[cnt][i]=1;
break;
}
w/=2;
cnt--;
}
}
/*
for(int i = 0;i<31;i++){
for(int j = 0;j<n;j++)
cout<<bit[i][j]<<" ";
cout<<endl;
}
*/
for(int i = 0;i<31;i++)
pref[i][0]=bit[i][0];

for(int i = 0;i<31;i++)
for(int j = 1;j<n;j++)
pref[i][j]=pref[i][j-1]+bit[i][j];

/*
cout<<endl;
for(int i = 0;i<31;i++){
for(int j = 0;j<n;j++)
cout<<pref[i][j]<<" ";
cout<<endl;
}
*/
for(int i = 0;i<q;i++){
int l,r;
cin>>l>>r;
l--;
r--;
int rez=0;
for(int j = 0;j<31;j++){
if(l>0){
rez=max(rez,pref[j][r]-pref[j][l-1]);
//cout<<l<<" "<<r<<" "<<pref[j][r]<<" "<<pref[j][l-1]<<endl;
}
else{
rez=max(rez,pref[j][r]);
//cout<<l<<" "<<r<<" "<<pref[j][r]<<" "<<endl;

}
}
cout<<rez<<endl;

}


    return 0;
}