/*
* Author: Geeza
*/
#include <bits/stdc++.h>
#define ld long double
#define ll long long
#define pb push_back
#define fin(a, n) for(int i = a; i < n; i++)
#define fjn(a, n) for(int j = a; j < n; j++)
#define all(a) a.begin(),a.end()
#define allr(a) a.rbegin(),a.rend()
#define FAST ios_base::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr)
using namespace std;
const double PI = acos(-1);
const int N = 1e7+10;
const ll oo = 0x3f3f3f3f3f3f3f3f;
const int mod = 1000000007, inf = 1e6;
string di[] = {"D","L", "U", "R", "UL", "UR", "DL", "DR"};
int dx[] = {+1, +0, +0, -1, -1, -1, +1, +1};
int dy[] = {+0, -1, +1, +0, -1, +1, -1, +1};
char dc[] = {'D', 'L', 'R', 'U'};
struct node {
ll leftVal, rightVal, leftFreq, rightFreq, bst, len;
node() {leftVal = rightVal = 0, leftFreq = rightFreq = bst = len = 0;}
node(ll x) {leftVal = rightVal = x, leftFreq = rightFreq = bst = len = 1;}
};
struct segTree {
ll treeSize;
vector<node> tree;
segTree(ll n) {
treeSize = 1;
while (treeSize < n) treeSize <<= 1;
tree.resize(2 * treeSize, node());
}
node merge(node l, node r) {
if (l.len == 0) return r;
if (r.len == 0) return l;
node parent = node();
parent.len = l.len + r.len;
parent.leftVal = l.leftVal;
parent.rightVal = r.rightVal;
parent.leftFreq = l.leftFreq;
if (l.leftFreq == l.len && l.rightVal == r.leftVal) parent.leftFreq += r.leftFreq;
parent.rightFreq = r.rightFreq;
if (r.rightFreq == r.len && l.rightVal == r.leftVal) parent.rightFreq += l.rightFreq;
parent.bst = max(l.bst, r.bst);
if (l.rightVal == r.leftVal) parent.bst = max(parent.bst, l.rightFreq + r.leftFreq);
return parent;
}
void build(vector<ll> &v, ll i, ll l, ll r) {
if (r-l == 1) {
if (l < v.size()) tree[i] = node(v[l]);
return;
}
ll mid = l+(r-l)/2;
build(v, 2*i+1, l, mid);
build(v, 2*i+2, mid, r);
tree[i] = merge(tree[2*i+1], tree[2*i+2]);
}
void build(vector<ll> &v) {
build(v, 0, 0, treeSize);
}
node query(ll l, ll r, ll i, ll lx, ll rx) {
if (lx >= r || rx <= l) return node();
if (lx >= l && rx <= r) return tree[i];
ll mid = (lx + rx) / 2;
node left = query(l, r, 2*i+1, lx, mid);
node right = query(l, r, 2*i+2, mid, rx);
return merge(left, right);
}
ll query(ll l, ll r) {
return query(l, r, 0, 0, treeSize).bst;
}
};
ll n, q;
void solve() {
vector<ll> v(n);
fin(0, n) cin >> v[i];
segTree st(n);
st.build(v);
while (q--) {
ll l, r; cin >> l >> r; l--;
cout << st.query(l, r) << "\n";
}
}
int main() {
#ifndef ONLINE_JUDGE
freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);
#endif
int tt = 1; //cin >> tt;
while(cin >> n){
if (n == 0) break;
cin >> q;
solve();
}
return 0;
}
LyoKKiBBdXRob3I6IEdlZXphCiovCgojaW5jbHVkZSA8Yml0cy9zdGRjKysuaD4KCiNkZWZpbmUgbGQgbG9uZyBkb3VibGUKI2RlZmluZSBsbCBsb25nIGxvbmcKI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSBmaW4oYSwgbikgZm9yKGludCBpID0gYTsgaSA8IG47IGkrKykKI2RlZmluZSBmam4oYSwgbikgZm9yKGludCBqID0gYTsgaiA8IG47IGorKykKI2RlZmluZSBhbGwoYSkgYS5iZWdpbigpLGEuZW5kKCkKI2RlZmluZSBhbGxyKGEpIGEucmJlZ2luKCksYS5yZW5kKCkKI2RlZmluZSBGQVNUIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpLCBjaW4udGllKG51bGxwdHIpLCBjb3V0LnRpZShudWxscHRyKQoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNvbnN0IGRvdWJsZSBQSSA9IGFjb3MoLTEpOwpjb25zdCBpbnQgTiA9IDFlNysxMDsKY29uc3QgbGwgb28gPSAweDNmM2YzZjNmM2YzZjNmM2Y7CmNvbnN0IGludCBtb2QgPSAxMDAwMDAwMDA3LCBpbmYgPSAxZTY7CgpzdHJpbmcgZGlbXSA9IHsiRCIsIkwiLCAiVSIsICJSIiwgIlVMIiwgIlVSIiwgIkRMIiwgIkRSIn07CmludCBkeFtdID0geysxLCArMCwgKzAsIC0xLCAtMSwgLTEsICsxLCArMX07CmludCBkeVtdID0geyswLCAtMSwgKzEsICswLCAtMSwgKzEsIC0xLCArMX07CmNoYXIgZGNbXSA9IHsnRCcsICdMJywgJ1InLCAnVSd9OwoKc3RydWN0IG5vZGUgewogICAgbGwgbGVmdFZhbCwgcmlnaHRWYWwsIGxlZnRGcmVxLCByaWdodEZyZXEsIGJzdCwgbGVuOwogICAgbm9kZSgpIHtsZWZ0VmFsID0gcmlnaHRWYWwgPSAwLCBsZWZ0RnJlcSA9IHJpZ2h0RnJlcSA9IGJzdCA9IGxlbiA9IDA7fQogICAgbm9kZShsbCB4KSB7bGVmdFZhbCA9IHJpZ2h0VmFsID0geCwgbGVmdEZyZXEgPSByaWdodEZyZXEgPSBic3QgPSBsZW4gPSAxO30KfTsKCnN0cnVjdCBzZWdUcmVlIHsKICAgIGxsIHRyZWVTaXplOwogICAgdmVjdG9yPG5vZGU+IHRyZWU7CgogICAgc2VnVHJlZShsbCBuKSB7CiAgICAgICAgdHJlZVNpemUgPSAxOwogICAgICAgIHdoaWxlICh0cmVlU2l6ZSA8IG4pIHRyZWVTaXplIDw8PSAxOwogICAgICAgIHRyZWUucmVzaXplKDIgKiB0cmVlU2l6ZSwgbm9kZSgpKTsKICAgIH0KCiAgICBub2RlIG1lcmdlKG5vZGUgbCwgbm9kZSByKSB7CiAgICAgICAgaWYgKGwubGVuID09IDApIHJldHVybiByOwogICAgICAgIGlmIChyLmxlbiA9PSAwKSByZXR1cm4gbDsKCiAgICAgICAgbm9kZSBwYXJlbnQgPSBub2RlKCk7CiAgICAgICAgcGFyZW50LmxlbiA9IGwubGVuICsgci5sZW47CiAgICAgICAgcGFyZW50LmxlZnRWYWwgPSBsLmxlZnRWYWw7CiAgICAgICAgcGFyZW50LnJpZ2h0VmFsID0gci5yaWdodFZhbDsKICAgICAgICBwYXJlbnQubGVmdEZyZXEgPSBsLmxlZnRGcmVxOwoKICAgICAgICBpZiAobC5sZWZ0RnJlcSA9PSBsLmxlbiAmJiBsLnJpZ2h0VmFsID09IHIubGVmdFZhbCkgcGFyZW50LmxlZnRGcmVxICs9IHIubGVmdEZyZXE7CiAgICAgICAgcGFyZW50LnJpZ2h0RnJlcSA9IHIucmlnaHRGcmVxOwogICAgICAgIGlmIChyLnJpZ2h0RnJlcSA9PSByLmxlbiAmJiBsLnJpZ2h0VmFsID09IHIubGVmdFZhbCkgcGFyZW50LnJpZ2h0RnJlcSArPSBsLnJpZ2h0RnJlcTsKICAgICAgICBwYXJlbnQuYnN0ID0gbWF4KGwuYnN0LCByLmJzdCk7CiAgICAgICAgaWYgKGwucmlnaHRWYWwgPT0gci5sZWZ0VmFsKSBwYXJlbnQuYnN0ID0gbWF4KHBhcmVudC5ic3QsIGwucmlnaHRGcmVxICsgci5sZWZ0RnJlcSk7CiAgICAgICAgcmV0dXJuIHBhcmVudDsKICAgIH0KCiAgICB2b2lkIGJ1aWxkKHZlY3RvcjxsbD4gJnYsIGxsIGksIGxsIGwsIGxsIHIpIHsKICAgICAgICBpZiAoci1sID09IDEpIHsKICAgICAgICAgICAgaWYgKGwgPCB2LnNpemUoKSkgdHJlZVtpXSA9IG5vZGUodltsXSk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIGxsIG1pZCA9IGwrKHItbCkvMjsKICAgICAgICBidWlsZCh2LCAyKmkrMSwgbCwgbWlkKTsKICAgICAgICBidWlsZCh2LCAyKmkrMiwgbWlkLCByKTsKICAgICAgICB0cmVlW2ldID0gbWVyZ2UodHJlZVsyKmkrMV0sIHRyZWVbMippKzJdKTsKICAgIH0KCiAgICB2b2lkIGJ1aWxkKHZlY3RvcjxsbD4gJnYpIHsKICAgICAgICBidWlsZCh2LCAwLCAwLCB0cmVlU2l6ZSk7CiAgICB9CgogICAgbm9kZSBxdWVyeShsbCBsLCBsbCByLCBsbCBpLCBsbCBseCwgbGwgcngpIHsKICAgICAgICBpZiAobHggPj0gciB8fCByeCA8PSBsKSByZXR1cm4gbm9kZSgpOwogICAgICAgIGlmIChseCA+PSBsICYmIHJ4IDw9IHIpIHJldHVybiB0cmVlW2ldOwoKICAgICAgICBsbCBtaWQgPSAobHggKyByeCkgLyAyOwoKICAgICAgICBub2RlIGxlZnQgPSBxdWVyeShsLCByLCAyKmkrMSwgbHgsIG1pZCk7CiAgICAgICAgbm9kZSByaWdodCA9IHF1ZXJ5KGwsIHIsIDIqaSsyLCBtaWQsIHJ4KTsKICAgICAgICByZXR1cm4gbWVyZ2UobGVmdCwgcmlnaHQpOwogICAgfQoKICAgIGxsIHF1ZXJ5KGxsIGwsIGxsIHIpIHsKICAgICAgICByZXR1cm4gcXVlcnkobCwgciwgMCwgMCwgdHJlZVNpemUpLmJzdDsKICAgIH0KfTsKbGwgbiwgcTsKdm9pZCBzb2x2ZSgpIHsKICAgIHZlY3RvcjxsbD4gdihuKTsKICAgIGZpbigwLCBuKSBjaW4gPj4gdltpXTsKICAgIHNlZ1RyZWUgc3Qobik7CiAgICBzdC5idWlsZCh2KTsKCiAgICB3aGlsZSAocS0tKSB7CiAgICAgICAgbGwgbCwgcjsgY2luID4+IGwgPj4gcjsgbC0tOwogICAgICAgIGNvdXQgPDwgc3QucXVlcnkobCwgcikgPDwgIlxuIjsKICAgIH0KfQoKaW50IG1haW4oKSB7CiNpZm5kZWYgT05MSU5FX0pVREdFCiAgICBmcmVvcGVuKCJpbnB1dC50eHQiLCJyIixzdGRpbik7CiAgICBmcmVvcGVuKCJvdXRwdXQudHh0IiwidyIsc3Rkb3V0KTsKI2VuZGlmCiAgICBpbnQgdHQgPSAxOyAvL2NpbiA+PiB0dDsKICAgIHdoaWxlKGNpbiA+PiBuKXsKICAgICAgICBpZiAobiA9PSAwKSBicmVhazsKICAgICAgICBjaW4gPj4gcTsKICAgICAgICBzb2x2ZSgpOwogICAgfQogICAgcmV0dXJuIDA7Cn0=