#include<bits/stdc++.h>
using namespace std;
const int M=100010;
int a[M],p[M],s[M],dp[M][20];
int rmq(int x,int y){
if(x>y)return 0;
int k=log2(y-x+1);
return max(dp[x][k],dp[y-(1<<k)+1][k]);
}
int main(){
int n,m,i,j,x,y,l,ans;
while(scanf("%d",&n)&&n){
scanf("%d",&m);
l=0;
y=-1e9;
for(i=1;i<=n;i++){
cin>>x;
if(x==y)dp[l][0]++;
else{
a[++l]=x;
s[l]=i;
dp[l][0]=1;
}
p[i]=l;
y=x;
}
s[l+1]=n+1;
for(j=1;(1<<j)<=l;j++)
for(i=1;i+(1<<j)-1<=l;i++)
dp[i][j]=max(dp[i][j-1],dp[i+(1<<(j-1))][j-1]);
for(i=1;i<=m;i++){
scanf("%d%d",&x,&y);
if(p[x]==p[y])printf("%d\n",y-x+1);
else{
ans=0;
if(s[p[x]+1]<=y)ans=max(ans,s[p[x]+1]-x);
if(s[p[y]]>=x)ans=max(ans,y-s[p[y]]+1);
printf("%d\n",max(ans,rmq(p[x]+1,p[y]-1)));
}
}
}
return 0;
}