#include <bits/stdc++.h>
#define pii pair<int,int>
using namespace std;
struct data{
pair<int ,int> lfeq,rfeq,totalfeq;
};
int n;
data tree[2*100001];
pii maxx(pii a, pii b)
{
if(a.first >= b.first)
return a;
else
return b;
}
data combine(data l, data r)
{ data res;
res.lfeq = l.totalfeq;
res.rfeq = r.totalfeq;
if(l.totalfeq.second == r.totalfeq.second)
{
res.totalfeq = make_pair(l.totalfeq.first + r.totalfeq.first,l.totalfeq.second);
}
else
{
if(l.rfeq.second == r.lfeq.second)
{
pair<int ,int > tp;
if(l.totalfeq.second == l.rfeq.second)
{
tp.first = max(l.totalfeq.first+r.lfeq.first,r.totalfeq.first);
tp.second = (tp.first == r.totalfeq.first)?r.totalfeq.second:l.totalfeq.second;
}
else if(r.lfeq.second == r.totalfeq.second)
{
tp.first = max(l.rfeq.first+r.totalfeq.first,l.totalfeq.first);
tp.second = (tp.first==l.totalfeq.first)?l.totalfeq.second:r.totalfeq.second;
}
res.totalfeq = tp;
}
else
{
res.totalfeq = maxx(l.totalfeq,r.totalfeq);
}
}
return res;
}
data init(int feq,int num)
{
data res;
res.lfeq.first = res.rfeq.first = res.totalfeq.first = feq;
res.lfeq.second = res.rfeq.second = res.totalfeq.second = num;
return res;
}
void build()
{
for(int i=n-1;i>0;i--)
{
tree[i] = combine(tree[i<<1],tree[i<<1|1]);
}
}
data query(int l,int r)
{
data resl= init(0,-1000001),resr = init (0,-1000001) ;
//int fl= 0;
for(l+=n,r+=n;l<r;l>>=1,r>>=1)
{
if(l&1) resl = combine(resl,tree[l++]);
if(r&1) resr = combine(tree[--r],resr);
}
return combine(resl,resr);
}
int main()
{ std::ios::sync_with_stdio(false);
//int t=1;
while(1)
{ int ts,l,r;
scanf("%d", &n);
if(n==0)
break;
scanf("%d",&ts);
int a[n];
for (int i = 0; i < n; ++i){
scanf("%d", &a[i]);
tree[n+i] = init(1,a[i]);
}
build();
while(ts--)
{
scanf("%d%d",&l,&r);
printf("%d \n",query(l-1,r).totalfeq.first);
}
//scanf("%d",&t);
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgcGlpIHBhaXI8aW50LGludD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKc3RydWN0IGRhdGF7CglwYWlyPGludCAsaW50PiBsZmVxLHJmZXEsdG90YWxmZXE7Cn07CmludCBuOwpkYXRhIHRyZWVbMioxMDAwMDFdOwogICAgcGlpIG1heHgocGlpIGEsIHBpaSBiKQogICAgewogICAgICAgIGlmKGEuZmlyc3QgPj0gYi5maXJzdCkKICAgICAgICAgICAgcmV0dXJuIGE7CiAgICAgICAgZWxzZQogICAgICAgICAgICByZXR1cm4gYjsKICAgIH0KZGF0YSBjb21iaW5lKGRhdGEgbCwgZGF0YSByKQp7CWRhdGEgcmVzOwoJCXJlcy5sZmVxID0gbC50b3RhbGZlcTsKCQlyZXMucmZlcSA9IHIudG90YWxmZXE7CglpZihsLnRvdGFsZmVxLnNlY29uZCA9PSByLnRvdGFsZmVxLnNlY29uZCkKCXsKCQlyZXMudG90YWxmZXEgPSBtYWtlX3BhaXIobC50b3RhbGZlcS5maXJzdCArIHIudG90YWxmZXEuZmlyc3QsbC50b3RhbGZlcS5zZWNvbmQpOwoJfQoJZWxzZQoJewoJCWlmKGwucmZlcS5zZWNvbmQgPT0gci5sZmVxLnNlY29uZCkKCQl7CgkJCXBhaXI8aW50ICxpbnQgPiB0cDsKCQkJaWYobC50b3RhbGZlcS5zZWNvbmQgPT0gbC5yZmVxLnNlY29uZCkKCQkJewoJCQkJdHAuZmlyc3QgPSBtYXgobC50b3RhbGZlcS5maXJzdCtyLmxmZXEuZmlyc3Qsci50b3RhbGZlcS5maXJzdCk7CgkJCQl0cC5zZWNvbmQgID0gKHRwLmZpcnN0ID09IHIudG90YWxmZXEuZmlyc3QpP3IudG90YWxmZXEuc2Vjb25kOmwudG90YWxmZXEuc2Vjb25kOwoJCQl9CgkJCWVsc2UgaWYoci5sZmVxLnNlY29uZCA9PSByLnRvdGFsZmVxLnNlY29uZCkKCQkJewoJCQkJdHAuZmlyc3QgPSBtYXgobC5yZmVxLmZpcnN0K3IudG90YWxmZXEuZmlyc3QsbC50b3RhbGZlcS5maXJzdCk7CgkJCQl0cC5zZWNvbmQgPSAodHAuZmlyc3Q9PWwudG90YWxmZXEuZmlyc3QpP2wudG90YWxmZXEuc2Vjb25kOnIudG90YWxmZXEuc2Vjb25kOwoJCQl9CgkJCXJlcy50b3RhbGZlcSA9IHRwOwoJCX0KCQllbHNlCgkJewoJCQlyZXMudG90YWxmZXEgPSBtYXh4KGwudG90YWxmZXEsci50b3RhbGZlcSk7CgkJfQoJfQoJcmV0dXJuIHJlczsKfQpkYXRhIGluaXQoaW50IGZlcSxpbnQgbnVtKQp7CglkYXRhIHJlczsKCXJlcy5sZmVxLmZpcnN0ID0gcmVzLnJmZXEuZmlyc3QgPSByZXMudG90YWxmZXEuZmlyc3QgPSBmZXE7CglyZXMubGZlcS5zZWNvbmQgPSByZXMucmZlcS5zZWNvbmQgPSByZXMudG90YWxmZXEuc2Vjb25kID0gbnVtOwoJcmV0dXJuIHJlczsKfQp2b2lkIGJ1aWxkKCkKewoJZm9yKGludCBpPW4tMTtpPjA7aS0tKQoJewoJCXRyZWVbaV0gPSBjb21iaW5lKHRyZWVbaTw8MV0sdHJlZVtpPDwxfDFdKTsKCX0KfQpkYXRhIHF1ZXJ5KGludCBsLGludCByKQp7CglkYXRhIHJlc2w9IGluaXQoMCwtMTAwMDAwMSkscmVzciA9IGluaXQgKDAsLTEwMDAwMDEpIDsKCS8vaW50IGZsPSAwOwoJZm9yKGwrPW4scis9bjtsPHI7bD4+PTEscj4+PTEpCgl7CQoJCWlmKGwmMSkgcmVzbCA9IGNvbWJpbmUocmVzbCx0cmVlW2wrK10pOwoJCWlmKHImMSkgcmVzciA9IGNvbWJpbmUodHJlZVstLXJdLHJlc3IpOwoJfQoJcmV0dXJuIGNvbWJpbmUocmVzbCxyZXNyKTsKfQoKaW50IG1haW4oKQp7CSBzdGQ6Omlvczo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKCS8vaW50IHQ9MTsKCXdoaWxlKDEpCgl7CWludCB0cyxsLHI7CQoJCXNjYW5mKCIlZCIsICZuKTsKCQlpZihuPT0wKQoJCQlicmVhazsKCQlzY2FuZigiJWQiLCZ0cyk7CgkJaW50IGFbbl07CgkJCgkJZm9yIChpbnQgaSA9IDA7IGkgPCBuOyArK2kpewoJCQlzY2FuZigiJWQiLCAmYVtpXSk7CgkJCXRyZWVbbitpXSA9IGluaXQoMSxhW2ldKTsKCQl9IAoJCWJ1aWxkKCk7CgkJCgkJd2hpbGUodHMtLSkKCQl7CgkJCXNjYW5mKCIlZCVkIiwmbCwmcik7CgkJCXByaW50ZigiJWQgXG4iLHF1ZXJ5KGwtMSxyKS50b3RhbGZlcS5maXJzdCk7CgkJfQoJCS8vc2NhbmYoIiVkIiwmdCk7Cgl9CglyZXR1cm4gMDsKfQ==