#include<bits/stdc++.h>
#define REP(i,n) for (int i = 1; i <= n; i++)
#define mod 1000000007
#define pb push_back
#define ff first
#define ss second
#define ii pair<int,int>
#define vi vector<int>
#define vii vector<ii>
#define lli long long int
#define INF 1000000000
#define BLK 1000
#define endl '\n'
const double PI = 3.141592653589793238460;
typedef std::complex<double> Complex;
typedef std::valarray<Complex> CArray;
using namespace std;
struct query{
int l;
int r;
int i;
};
query Q[100001];
int ar[100001];
int ans[100001];
int B[100001];
int fre[200005];
set<ii> st;
bool comp(query a, query b)
{
if(B[a.l] != B[b.l])
return B[a.l] < B[b.l];
return a.r < b.r;
}
void add(int idx)
{
int ele = ar[idx];
fre[ele]++;
if(fre[ele] > 1)
{
st.erase({-(fre[ele]-1) , ele});
}
st.insert({-fre[ele] , ele});
}
void remove(int idx)
{
int ele = ar[idx];
fre[ele]--;
st.erase({-(fre[ele]+1) , ele});
if(fre[ele] > 0)
st.insert({-(fre[ele]) , ele});
}
int getMostFre()
{
ii p = *st.begin();
return -p.ff;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
REP(i , 100001) B[i-1] = i / BLK;
int n , q;
while(1)
{
cin>>n;
if(n == 0) break;
cin>>q;
REP(i , n) cin>>ar[i-1];
int cnt = 1;
int pre = ar[0];
for(int i=0;i<n;i++)
if(ar[i] == pre)
ar[i] = cnt;
else
cnt++ , pre = ar[i] , ar[i] = cnt;
REP(i , cnt) fre[i] = 0;
REP(i , q)
{
cin>>Q[i-1].l>>Q[i-1].r , Q[i-1].i = i;
Q[i-1].l-- , Q[i-1].r--;
}
sort(Q , Q+q , comp);
st.clear();
int ML = 0 , MR = -1;
REP(i , q)
{
int L = Q[i-1].l;
int R = Q[i-1].r;
while(ML > L)
ML-- , add(ML);
while(MR < R)
MR++ , add(MR);
while(ML < L)
remove(ML) , ML++;
while(MR > R)
remove(MR) , MR--;
ans[Q[i-1].i] = getMostFre();
}
REP(i , q)
cout<<ans[i]<<endl;
}
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KI2RlZmluZSBSRVAoaSxuKSBmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspCiNkZWZpbmUgbW9kIDEwMDAwMDAwMDcKI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSBmZiBmaXJzdAojZGVmaW5lIHNzIHNlY29uZAojZGVmaW5lIGlpIHBhaXI8aW50LGludD4KI2RlZmluZSB2aSB2ZWN0b3I8aW50PgojZGVmaW5lIHZpaSB2ZWN0b3I8aWk+CiNkZWZpbmUgbGxpIGxvbmcgbG9uZyBpbnQKI2RlZmluZSBJTkYgMTAwMDAwMDAwMAojZGVmaW5lIEJMSyAxMDAwCiNkZWZpbmUgZW5kbCAnXG4nCmNvbnN0IGRvdWJsZSBQSSA9IDMuMTQxNTkyNjUzNTg5NzkzMjM4NDYwOwp0eXBlZGVmIHN0ZDo6Y29tcGxleDxkb3VibGU+IENvbXBsZXg7CnR5cGVkZWYgc3RkOjp2YWxhcnJheTxDb21wbGV4PiBDQXJyYXk7Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwpzdHJ1Y3QgcXVlcnl7CglpbnQgbDsKCWludCByOwoJaW50IGk7Cn07CgpxdWVyeSBRWzEwMDAwMV07CmludCBhclsxMDAwMDFdOwppbnQgYW5zWzEwMDAwMV07CmludCBCWzEwMDAwMV07CmludCBmcmVbMjAwMDA1XTsKc2V0PGlpPiBzdDsKCmJvb2wgY29tcChxdWVyeSBhLCBxdWVyeSBiKQp7CglpZihCW2EubF0gIT0gQltiLmxdKQoJcmV0dXJuIEJbYS5sXSA8IEJbYi5sXTsKCQoJcmV0dXJuIGEuciA8IGIucjsKfQoKdm9pZCBhZGQoaW50IGlkeCkKewoJaW50IGVsZSA9IGFyW2lkeF07CglmcmVbZWxlXSsrOwoJaWYoZnJlW2VsZV0gPiAxKQoJewoJCXN0LmVyYXNlKHstKGZyZVtlbGVdLTEpICwgZWxlfSk7Cgl9CglzdC5pbnNlcnQoey1mcmVbZWxlXSAsIGVsZX0pOwp9Cgp2b2lkIHJlbW92ZShpbnQgaWR4KQp7CglpbnQgZWxlID0gYXJbaWR4XTsKCWZyZVtlbGVdLS07CgkKCXN0LmVyYXNlKHstKGZyZVtlbGVdKzEpICwgZWxlfSk7CglpZihmcmVbZWxlXSA+IDApCglzdC5pbnNlcnQoey0oZnJlW2VsZV0pICwgZWxlfSk7Cn0KCmludCBnZXRNb3N0RnJlKCkKewoJaWkgcCA9ICpzdC5iZWdpbigpOwoJcmV0dXJuIC1wLmZmOwp9CgppbnQgbWFpbigpCnsKCWlvczo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKCWNpbi50aWUoMCk7Cgljb3V0LnRpZSgwKTsKCVJFUChpICwgMTAwMDAxKSBCW2ktMV0gPSBpIC8gQkxLOwoJaW50IG4gLCBxOwoJd2hpbGUoMSkKCXsKCQljaW4+Pm47CgkJaWYobiA9PSAwKSBicmVhazsKCQljaW4+PnE7CgkJCgkJUkVQKGkgLCBuKSBjaW4+PmFyW2ktMV07CgkJCgkJaW50IGNudCA9IDE7CgkJaW50IHByZSA9IGFyWzBdOwoJCWZvcihpbnQgaT0wO2k8bjtpKyspCgkJaWYoYXJbaV0gPT0gcHJlKQoJCWFyW2ldID0gY250OwoJCWVsc2UKCQljbnQrKyAsIHByZSA9IGFyW2ldICwgYXJbaV0gPSBjbnQ7CgkJCgkJUkVQKGkgLCBjbnQpIGZyZVtpXSA9IDA7CgkJUkVQKGkgLCBxKQoJCXsKCQkJY2luPj5RW2ktMV0ubD4+UVtpLTFdLnIgLCBRW2ktMV0uaSA9IGk7CgkJCVFbaS0xXS5sLS0gLCBRW2ktMV0uci0tOwoJCX0KCQlzb3J0KFEgLCBRK3EgLCBjb21wKTsKCQlzdC5jbGVhcigpOwoJCWludCBNTCA9IDAgLCBNUiA9IC0xOwoJCVJFUChpICwgcSkKCQl7CgkJCWludCBMID0gUVtpLTFdLmw7CgkJCWludCBSID0gUVtpLTFdLnI7CgkJCQoJCQl3aGlsZShNTCA+IEwpCgkJCU1MLS0gLCBhZGQoTUwpOwoJCQkKCQkJd2hpbGUoTVIgPCBSKQoJCQlNUisrICwgYWRkKE1SKTsKCQkJCgkJCXdoaWxlKE1MIDwgTCkKCQkJcmVtb3ZlKE1MKSAsIE1MKys7CgkJCQoJCQl3aGlsZShNUiA+IFIpCgkJCXJlbW92ZShNUikgLCBNUi0tOwoJCQkKCQkJYW5zW1FbaS0xXS5pXSA9IGdldE1vc3RGcmUoKTsKCQl9CgkJCgkJUkVQKGkgLCBxKQoJCWNvdXQ8PGFuc1tpXTw8ZW5kbDsKCX0KCQp9Cg==