#include #include #include #include #include using namespace std; const int MAXN=100010; int a[MAXN]; int b[MAXN]; int dp[MAXN][20]; void makeRMQ(int n,int b[]) { for(int i=0;i>1); if(a[mid]>=tmp)r=mid; else l=mid+1; } return r; } int main() { int n,q; int s,t; while(scanf("%d",&n),n) { scanf("%d",&q); for(int i=0;i=0;i--) { if(i==n-1)tmp=1; else { if(a[i]==a[i+1])tmp++; else tmp=1; } b[i]=tmp; } makeRMQ(n,b); while(q--) { scanf("%d%d",&s,&t); s--; t--; int temp=bi_search(s,t); int ans=t-temp+1; t=temp-1; if(s>t)printf("%d\n",ans); else printf("%d\n",max(ans,rmq(s,t))); } } return 0; }