rt
#include <bits/stdc++.h>
#define int long long
#define rg register
#define N 100005
using namespace std;
int n,m,a[N],p[N],t[N],cnt,f[N][21];
inline int query(int l, int r){
int L=t[p[l]]-l+1,R=r-t[p[r]-1],ll=p[l],rr=p[r];
if(ll==rr) return rr-ll+1;
else if(rr-ll==1) return max(L,R);
int k=log2(rr-ll-1);
return max(max(max(f[ll+1][k],f[rr-(1<<k)][k]),L),R);
}
signed main(){
while(scanf("%lld",&n),n!=0){
scanf("%lld",&m);
cnt=0;
memset(a,0,sizeof(a));
memset(t,0,sizeof(t));
memset(p,0,sizeof(p));
memset(f,0,sizeof(f));
for(rg int i = 1; i <= n; i++ ){
scanf("%lld",a+i);
if(a[i]!=a[i-1]){
t[cnt++]=i-1;
}
p[i]=cnt;
f[cnt][0]++;
}
t[cnt]=n;
for(rg int j = 1; (1<<j) <= cnt; j++ ){
for(rg int i = 1; (i+(1<<j)-1)<= cnt; i++ ){
f[i][j]=max(f[i][j-1],f[i+(1<<(j-1))][j-1]);
}
}
while(m--){
int l,r;
scanf("%lld%lld",&l,&r);
printf("%lld\n",query(l,r));
}
}
return 0;
}