using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace adf
{
    internal class Program
    {
        static int[] A;
        static public int stepen(int N)
        {
            int max = 0;
            for (int i = 0; i < N; i++)
            {
                int k = 0, e = 1;
                while (e <= A[i])
                {
                    if (e * e <= A[i]) { k *= 2; e *= e; }
                    e *= 2;
                    k++;
                }
                A[i] = k;
                if (k > max) max = k;
            }
            return max;
        }
        static void Main(string[] args)
        {
            int N, Q;
            string[] s = Console.ReadLine().Split(' ');
            N = int.Parse(s[0]);
            Q = int.Parse(s[1]);
            A= new int[N];
            s = Console.ReadLine().Split(' ');
            for (int i = 0; i < N; i++)
            {
                A[i] = int.Parse((string)s[i]);
            }
            int max1 = stepen(N);
            int[,] B = new int[N, max1+1];
            for (int i = 0; i < N; i++)
            {
                if (i > 0) { for (int j = 0; j < max1 + 1; j++) B[i, j] = B[i - 1, j]; }
                B[i, A[i]]++;
            }
            int[] pocetak1 = new int[Q];
            int[] kraj1 = new int[Q];
            for (int i = 0; i < Q; i++)
            {
                s = Console.ReadLine().Split(' ');
                pocetak1[i] = int.Parse(s[0]);
                kraj1[i]=int.Parse(s[1]);
            }
            for (int i = 0; i < Q; i++)
            {
                int resenje = 0;
                int pocetak = pocetak1[i];
                int kraj = kraj1[i];
                pocetak--; kraj--;
                for (int j = 0; j <= max1; j++)
                {
                    if (B[kraj, j] != 0)
                    {
                        int brpojavljivanja = B[kraj, j];
                        if (pocetak > 0) brpojavljivanja = B[kraj, j] - B[pocetak - 1, j];
                        if (brpojavljivanja > resenje) resenje = brpojavljivanja;
                    }
                }
                Console.WriteLine(resenje);
            }

        }
    }
}