#include <iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#define sf(x) scanf("%d",&x)
using namespace std;
#define SIZE 100005
struct node {
int number;
int count;
int ln;
int lc;
int rn;
int rc;
};
node st[4*SIZE];
int arr[SIZE];
void construct(int ss,int se,int index)
{
if(ss==se)
{
st[index].number=st[index].ln=st[index].rn=arr[ss];
st[index].count=st[index].lc=st[index].rc=1;
// cout<<st[index].number<<" "<<st[index].count<<" "<<st[index].ln<<" "<<st[index].lc<<" "<<st[index].rn<<" "<<st[index].rc<<" "<<index<<endl;
return;
}
int mid=(ss+se)/2;
construct(ss,mid,2*index+1);
construct(mid+1,se,2*index+2);
node left=st[2*index+1];
node right=st[2*index+2];
st[index].ln=left.ln;
st[index].lc=left.lc;
st[index].rn=right.rn;
st[index].rc=right.rc;
if(left.number==right.number)
{
st[index].number=left.number;
st[index].count=left.count+right.count;
}
else
{
int m=-1;
if(left.rn==right.ln)
{
m=left.rc+right.lc;
}
int ans=max(left.count,max(m,right.count));
if(ans==left.count)
{
st[index].number=left.number;
st[index].count=left.count;
}
else if(ans==right.count)
{
st[index].number=right.number;
st[index].count=right.count;
}
else
{
st[index].number=left.rn;
st[index].count=m;
}
}
if(st[index].ln==st[index].number)
st[index].lc=st[index].count;
if(st[index].rn==st[index].number)
st[index].rc=st[index].count;
// cout<<st[index].number<<" "<<st[index].count<<" "<<st[index].ln<<" "<<st[index].lc<<" "<<st[index].rn<<" "<<st[index].rc<<" "<<index<<endl;
}
node search(int ss,int se,int qs,int qe,int index)
{
if(qs>se || ss>qe)
{
node temp;
temp.number=temp.ln=temp.rn=-100000;
temp.count=temp.lc=temp.rc=-1;
return temp;
}
// cout<<ss<<" "<<se<<endl;
if(qs<=ss && se<=qe)
{
return st[index];
}
int mid=(ss+se)/2;
node left=search(ss,mid,qs,qe,2*index+1);
node right=search(mid+1,se,qs,qe,2*index+2);
node res;
res.ln=left.ln;
res.lc=left.lc;
res.rn=right.rn;
res.rc=right.rc;
if(left.number==right.number)
{
res.number=left.number;
res.count=left.count+right.count;
}
else
{
int m=-1;
if(left.rn==right.ln)
{
m=left.rc+right.lc;
}
int ans=max(left.count,max(m,right.count));
if(ans==left.count)
{
res.number=left.number;
res.count=left.count;
}
else if(ans==right.count)
{
res.number=right.number;
res.count=right.count;
}
else
{
res.number=left.rn;
res.count=m;
}
}
if(res.ln==res.number)
res.lc=st[index].count;
if(res.rn==res.number)
res.rc=res.count;
return res;
}
int main()
{
// your code goes here
ios::sync_with_stdio(false);
int n,t;
scanf("%d",&n);
while(n!=0)
{
scanf("%d",&t);
for(int i=0;i<n;i++)
{
scanf("%d",&arr[i]);
}
construct(0,n-1,0);
while(t--)
{
int a,b;
scanf("%d %d",&a,&b);
node res=search(0,n-1,a-1,b-1,0);
printf("%d\n",res.count);
}
scanf("%d",&n);
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZTxjc3RkaW8+CiNpbmNsdWRlPGNtYXRoPgojaW5jbHVkZTxjc3RyaW5nPgojZGVmaW5lIHNmKHgpIHNjYW5mKCIlZCIsJngpCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgU0laRSAxMDAwMDUKc3RydWN0IG5vZGUgewoJaW50IG51bWJlcjsKCWludCBjb3VudDsKCQoJaW50IGxuOwoJaW50IGxjOwoJaW50IHJuOwoJaW50IHJjOwp9Owpub2RlIHN0WzQqU0laRV07CmludCBhcnJbU0laRV07CnZvaWQgY29uc3RydWN0KGludCBzcyxpbnQgc2UsaW50IGluZGV4KQp7CglpZihzcz09c2UpCgl7CgkJc3RbaW5kZXhdLm51bWJlcj1zdFtpbmRleF0ubG49c3RbaW5kZXhdLnJuPWFycltzc107CgkJc3RbaW5kZXhdLmNvdW50PXN0W2luZGV4XS5sYz1zdFtpbmRleF0ucmM9MTsKCQkKCQkvLyBjb3V0PDxzdFtpbmRleF0ubnVtYmVyPDwiICI8PHN0W2luZGV4XS5jb3VudDw8IiAiPDxzdFtpbmRleF0ubG48PCIgIjw8c3RbaW5kZXhdLmxjPDwiICI8PHN0W2luZGV4XS5ybjw8IiAiPDxzdFtpbmRleF0ucmM8PCIgIjw8aW5kZXg8PGVuZGw7CgkJcmV0dXJuOwoJfQoJCglpbnQgbWlkPShzcytzZSkvMjsKCWNvbnN0cnVjdChzcyxtaWQsMippbmRleCsxKTsKCWNvbnN0cnVjdChtaWQrMSxzZSwyKmluZGV4KzIpOwoJCglub2RlIGxlZnQ9c3RbMippbmRleCsxXTsKCW5vZGUgcmlnaHQ9c3RbMippbmRleCsyXTsKCQoJc3RbaW5kZXhdLmxuPWxlZnQubG47CglzdFtpbmRleF0ubGM9bGVmdC5sYzsKCQoJc3RbaW5kZXhdLnJuPXJpZ2h0LnJuOwoJc3RbaW5kZXhdLnJjPXJpZ2h0LnJjOwoJCglpZihsZWZ0Lm51bWJlcj09cmlnaHQubnVtYmVyKQoJewoJCXN0W2luZGV4XS5udW1iZXI9bGVmdC5udW1iZXI7CgkJc3RbaW5kZXhdLmNvdW50PWxlZnQuY291bnQrcmlnaHQuY291bnQ7Cgl9CgllbHNlCgl7CgkJaW50IG09LTE7CgkJaWYobGVmdC5ybj09cmlnaHQubG4pCgkJewoJCQltPWxlZnQucmMrcmlnaHQubGM7CgkJfQoJCWludCBhbnM9bWF4KGxlZnQuY291bnQsbWF4KG0scmlnaHQuY291bnQpKTsKCQlpZihhbnM9PWxlZnQuY291bnQpCgkJewoJCQkJc3RbaW5kZXhdLm51bWJlcj1sZWZ0Lm51bWJlcjsKCQkJCXN0W2luZGV4XS5jb3VudD1sZWZ0LmNvdW50OwoJCX0KCQllbHNlIGlmKGFucz09cmlnaHQuY291bnQpCgkJewoJCQkJc3RbaW5kZXhdLm51bWJlcj1yaWdodC5udW1iZXI7CgkJCQlzdFtpbmRleF0uY291bnQ9cmlnaHQuY291bnQ7CgkJfQoJCWVsc2UKCQl7CgkJCXN0W2luZGV4XS5udW1iZXI9bGVmdC5ybjsKCQkJc3RbaW5kZXhdLmNvdW50PW07CgkJfQoJfQoJaWYoc3RbaW5kZXhdLmxuPT1zdFtpbmRleF0ubnVtYmVyKQoJc3RbaW5kZXhdLmxjPXN0W2luZGV4XS5jb3VudDsKCWlmKHN0W2luZGV4XS5ybj09c3RbaW5kZXhdLm51bWJlcikKCXN0W2luZGV4XS5yYz1zdFtpbmRleF0uY291bnQ7CgkKCQkvLyBjb3V0PDxzdFtpbmRleF0ubnVtYmVyPDwiICI8PHN0W2luZGV4XS5jb3VudDw8IiAiPDxzdFtpbmRleF0ubG48PCIgIjw8c3RbaW5kZXhdLmxjPDwiICI8PHN0W2luZGV4XS5ybjw8IiAiPDxzdFtpbmRleF0ucmM8PCIgIjw8aW5kZXg8PGVuZGw7Cn0Kbm9kZSBzZWFyY2goaW50IHNzLGludCBzZSxpbnQgcXMsaW50IHFlLGludCBpbmRleCkKewoJCglpZihxcz5zZSB8fCBzcz5xZSkKCXsKCQlub2RlIHRlbXA7CgkJdGVtcC5udW1iZXI9dGVtcC5sbj10ZW1wLnJuPS0xMDAwMDA7CgkJdGVtcC5jb3VudD10ZW1wLmxjPXRlbXAucmM9LTE7CgkJcmV0dXJuIHRlbXA7Cgl9CgkvLyBjb3V0PDxzczw8IiAiPDxzZTw8ZW5kbDsKCWlmKHFzPD1zcyAmJiBzZTw9cWUpCgl7CgkJcmV0dXJuIHN0W2luZGV4XTsKCX0KCWludCBtaWQ9KHNzK3NlKS8yOwoJbm9kZSBsZWZ0PXNlYXJjaChzcyxtaWQscXMscWUsMippbmRleCsxKTsKCW5vZGUgcmlnaHQ9c2VhcmNoKG1pZCsxLHNlLHFzLHFlLDIqaW5kZXgrMik7CgkKCW5vZGUgcmVzOwoJcmVzLmxuPWxlZnQubG47CglyZXMubGM9bGVmdC5sYzsKCQoJcmVzLnJuPXJpZ2h0LnJuOwoJcmVzLnJjPXJpZ2h0LnJjOwoJCglpZihsZWZ0Lm51bWJlcj09cmlnaHQubnVtYmVyKQoJewoJCXJlcy5udW1iZXI9bGVmdC5udW1iZXI7CgkJcmVzLmNvdW50PWxlZnQuY291bnQrcmlnaHQuY291bnQ7Cgl9CgllbHNlCgl7CgkJaW50IG09LTE7CgkJaWYobGVmdC5ybj09cmlnaHQubG4pCgkJewoJCQltPWxlZnQucmMrcmlnaHQubGM7CgkJfQoJCWludCBhbnM9bWF4KGxlZnQuY291bnQsbWF4KG0scmlnaHQuY291bnQpKTsKCQlpZihhbnM9PWxlZnQuY291bnQpCgkJewoJCQkJcmVzLm51bWJlcj1sZWZ0Lm51bWJlcjsKCQkJCXJlcy5jb3VudD1sZWZ0LmNvdW50OwoJCX0KCQllbHNlIGlmKGFucz09cmlnaHQuY291bnQpCgkJewoJCQkJcmVzLm51bWJlcj1yaWdodC5udW1iZXI7CgkJCQlyZXMuY291bnQ9cmlnaHQuY291bnQ7CgkJfQoJCWVsc2UKCQl7CgkJCXJlcy5udW1iZXI9bGVmdC5ybjsKCQkJcmVzLmNvdW50PW07CgkJfQoJfQoJaWYocmVzLmxuPT1yZXMubnVtYmVyKQoJcmVzLmxjPXN0W2luZGV4XS5jb3VudDsKCWlmKHJlcy5ybj09cmVzLm51bWJlcikKCXJlcy5yYz1yZXMuY291bnQ7CgkKCXJldHVybiByZXM7Cn0KaW50IG1haW4oKSAKewoJLy8geW91ciBjb2RlIGdvZXMgaGVyZQoJaW9zOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwoJaW50IG4sdDsKCXNjYW5mKCIlZCIsJm4pOwoJd2hpbGUobiE9MCkKCXsKCQlzY2FuZigiJWQiLCZ0KTsKCQlmb3IoaW50IGk9MDtpPG47aSsrKQoJCXsKCQkJc2NhbmYoIiVkIiwmYXJyW2ldKTsKCQl9CgkJY29uc3RydWN0KDAsbi0xLDApOwoJCXdoaWxlKHQtLSkKCQl7CgkJCWludCBhLGI7CgkJCXNjYW5mKCIlZCAlZCIsJmEsJmIpOwoJCQlub2RlIHJlcz1zZWFyY2goMCxuLTEsYS0xLGItMSwwKTsKCQkJcHJpbnRmKCIlZFxuIixyZXMuY291bnQpOwoJCX0KCQlzY2FuZigiJWQiLCZuKTsKCX0KCXJldHVybiAwOwp9Cgo=