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

int a[500000], prefb[32][500000];

int main()
{
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);

	int n, q;
	cin >> n >> q;
	for(int i = 0; i < n; i++) {
		cin >> a[i];
	}
	// odredi msb za svaki
	memset(prefb, 0, sizeof(prefb));
	for(int i = 0; i < n; i++) {
		if(a[i] == 0)
			continue;
		int tmp = __builtin_clz(a[i]);
		prefb[tmp][i] = 1;
		if(i > 0) {
			for(int j = 0; j < 32; j++) {
				prefb[j][i] += prefb[j][i-1];
			}
		}
	}
	for(int i = 0; i < q; i++) {
		int l, r;
		cin >> l >> r;
		l--; r--;
		int res = 0;
		for(int j = 0; j < 32; j++) {
			if(l == 0)
				res = max(res, prefb[j][r]);
			else
				res = max(res, prefb[j][r] - prefb[j][l-1]);
		}
		cout << res << '\n';
	}

	return 0;
}