List<int> konacno = new List<int>();
string[] prvired = Console.ReadLine().Split();
int n = int.Parse(prvired[0]);
int q = int.Parse(prvired[1]);
string[] drugired = Console.ReadLine().Split();
int[] niz = new int[drugired.Length];
for (int i = 0; i < drugired.Length; i++)
{
    niz[i] = int.Parse(drugired[i]);
}
int pocetak = 0;
int kraj = 0;
List<int> sortirani = new List<int>();
for (int i = 0; i < q; i++)
{
    int resenje = 0;
    sortirani.Clear();
    string[] upit = Console.ReadLine().Split();
    pocetak = int.Parse(upit[0]);
    kraj = int.Parse(upit[1]);
    for (int j = pocetak - 1; j < kraj; j++)
    {
        sortirani.Add(niz[j]);
    }
    sortirani.Sort();
    for (int j = 0; j < sortirani.Count - 1; j++)
    {
        if ((sortirani[j] & sortirani[j + 1]) > (sortirani[j] ^ sortirani[j + 1]))
        {
            resenje++;
        }
    }
    konacno.Add(resenje);
}
for (int i = 0; i < konacno.Count; i++)
{
    Console.WriteLine(konacno[i]);
}