RT
#include<bits/stdc++.h>
using namespace std;
const int N = 1e6 + 100;
int n , m , ans;
int a[N];
int st[N][30];
int mp[N];
void find(){
for(int i = 1 ; i < 20 ; i ++)
{
for(int j = 1 ; j + (1 << i) - 1 <= n ; j ++)
{
st[j][i] = max(st[j][i - 1] , st[(1 << i - 1) + j][i - 1]);
//st2[j][i] = min(st2[j][i - 1] , st2[(1 << i - 1) + j][i - 1]);
}
}
}
int cal(int l , int r)
{
if(l > r)
return 0;
int len = log2(r - l + 1);
int x = max(st[l][len] , st[r - (1 << (len)) + 1][len]);
return x;
}
int main()
{
while(1)
{
scanf("%d", &n);
if(!n)
return 0;
scanf("%d" , &m);
mp[1] = 1;
for(int i = 1 ; i <= n ; i ++)
{
scanf("%d" , &a[i]);
if(i > 1)
{
if(a[i] == a[i - 1])
mp[i] = mp[i - 1] + 1;
else mp[i] = 1;
}
}
for(int i = 1 ; i <= n ; i ++)
{
st[i][0] = mp[i];
}
find();
while(m --)
{
int x , y;
scanf("%d" , &x);
if(x == 0)
return 0;
scanf("%d" , &y);
int cnt = x;
while(cnt <= y && a[cnt] == a[cnt - 1])
{
cnt ++;
}
printf("%d\n" , max(cnt - x , cal(cnt , y)));
}
}
return 0;
}