#include<bits/stdc++.h>
using namespace std;
const int N=1e5+5;
int a[N],lef[N],righ[N],cnt[N],num[N],st[N][30];
int len,n,m,l,r;
void ST()
{
for(int i=1;i<=len;i++)
st[i][0]=cnt[i];
for(int j=1;(1<<j)<=n;j++)
{
for(int i=1;i+(1<<j)-1<=n;i++)
{
st[i][j]=max(st[i][j-1],st[i+(1<<(j-1))][j-1]);
}
}
}
int rmq(int l,int r)
{
int k=0;
while((1<<(k+1))<=(r-l+1))
{
k++;
}
return max(st[l][k],st[r-(1<<k)+1][k]);
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
while(cin >> n,n)
{
cin >> m >> a[1];
len=1;
lef[len]=1;
cnt[len]=1;
num[1]=len;
for(int i=2;i<=n;i++)
{
cin >> a[i];
if(a[i]==a[i-1])
{
cnt[len]++;
num[i]=len;
}
else
{
righ[len]=i-1;
len++;
lef[len]=i;
cnt[len]=1;
num[i]=len;
}
}
ST();
while(m--)
{
cin >> l >> r;
if(num[l]==num[r])
{
cout << r-l+1 << endl;
}
else
{
int res=0;
if(num[l]+2<=num[r])
{
res=rmq(num[l]+1,num[r]-1);
}
res=max(res,max(righ[num[l]]-l+1,r-lef[num[r]]+1));
cout << res << endl;
}
}
}
return 0;
}
07-26
07-26