//ST表
#include<bits/stdc++.h>
#define IO ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0)
//#define int long long
using namespace std;
const int maxn=100000+5;
int d[maxn][32];
void RMQ_init(int *A,int n)
{
for(int i=0;i<n;i++) d[i][0]=A[i];
for(int j=1;(1<<j)<=n;j++)
for(int i=0;i+(1<<j)<=n;i++)
d[i][j]=max(d[i][j-1],d[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(d[L][k],d[R-(1<<k)+1][k]);
}
int a[maxn],val[maxn],cnt[maxn],num[maxn],l[maxn],r[maxn];
int32_t main()
{
IO;
int n,q,k;
while(cin>>n&&n){
cin>>q;
k=0;
memset(cnt,0,sizeof(cnt));
for(int i=0;i<n;i++){
cin>>a[i];
if(!i) {
cnt[k]=1;
num[i]=k;
l[i]=k;
r[i]=i;
}
else {
if(a[i]==a[i-1]){
cnt[k]++;
num[i]=k;
l[i]=l[i-1];
}
else {
for(int j=l[i-1];j<i;j++)
r[j]=i-1;
k++;
cnt[k]=1;
num[i]=k;
l[i]=i;
r[i]=i;
}
}
if(i==n-1){
if(a[i]==a[i-1]){
for(int j=l[i];j<n;j++)
r[j]=i-1;
}
}
}
k++;
RMQ_init(cnt,k);
int L,R;
while(q--){
cin>>L>>R;
--L,--R;
if(num[L]==num[R]) cout<<R-L+1<<endl;
else {
int ans=max(r[L]-L+1,R-l[R]+1);
if(num[R]-num[L]>1) ans=max(ans,RMQ(num[L]+1,num[R]-1));
cout<<ans<<endl;
}
}
}
}