// ROOT : DRAGON3012009 : WA in Real Life
#include <bits/stdc++.h>
#define FOR(i,l,r) for(int i = l ; i <= r ; i ++)
#define FORD(i,r,l) for(int i = r ; i >= l ; i --)
#define REP(i, a ) for(int i = 0 ; i < a ; i ++ )
#define compare(v) sort((v).begin(), (v).end()); (v).erase(unique((v).begin(), (v).end()), (v).end());
#define ll long long
#define el "\n"
#define fi first
#define se second
#define _ROOT_ int main()
#define M 1000000007
#define MAXN 1000001
#define INF (1ll<<30)
#define BLOCK 425
#define NAME "file"
#define debug(a) cout << #a << " = " << a << endl;
using namespace std;
ll n, m, q ;
ll a[MAXN] ;
ll res[MAXN ] ;
ll mp[MAXN ] ;
vector<ll> pos[MAXN ] ;
vector<ll> cpr ;
vector<pair<ll,ll> > que[MAXN ] ;
vector<ll> big ;
struct Seg {
ll val[MAXN << 2 ] ;
void update(ll id, ll l, ll r, ll pos, ll value ) {
if(l == r ) val[id] = max(val[id], value ) ;
else {
ll m = l + r >> 1 ;
if(m >= pos ) update(id << 1, l, m, pos, value ) ;
else update(id << 1 | 1, m + 1, r, pos, value ) ;
val[id] = max(val[id << 1], val[id << 1 | 1 ]) ;
}
}
ll get(ll id, ll l, ll r, ll u, ll v ) {
if(u > r || v < l ) return 0 ;
if(u <= l && v >= r ) return val[id] ;
ll m = l + r >> 1 ;
return max(get(id << 1, l, m,u, v ), get(id << 1 | 1, m + 1, r, u, v )) ;
}
} seg ;
void init() {
cin >> n >> q ;
FOR(i, 1, n ) cin >> a[i] ;
FOR(i, 1, n ) cpr.push_back(a[i]) ;
compare(cpr) ;
FOR(i, 1, n ) a[i] = lower_bound(cpr.begin(), cpr.end(), a[i] ) - cpr.begin() + 1 ;
FOR(cnt, 1, q ) {
ll l, r ;
cin >> l >> r ;
que[l].push_back({r, cnt } ) ;
}
}
void solve() {
FORD(i, n, 1 ) {
pos[a[i]].push_back(i) ;
if(pos[a[i]].size() < BLOCK ) {
for(ll v : pos[a[i]] ) seg.update(1 , 0 , n , v , v - i ) ;
}else if(!mp[a[i]]&& pos[a[i]].size() >= BLOCK)
{
mp[a[i]] = true ;
big.push_back(a[i]);
}
for(auto [r , id ] : que[i] ) {
ll ans = seg.get(1 , 0 , n , i , r ) ;
for(ll v : big ) {
auto it = upper_bound(pos[i].begin() , pos[i].end() , r ) ;
if(it == pos[i].begin() ) continue ;
ans = max(ans , abs( *prev(it) - pos[i][0] ) ) ;
}
res[id] = ans ;
}
}
FOR(i , 1 , q ) cout << res[i] << el ;
}
_ROOT_ {
// freopen(NAME".inp" , "r" , stdin);
// freopen(NAME".out" , "w", stdout) ;
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int t = 1; // cin >> t ;
while(t--) {
init();
solve();
}
return (0&0);
}
Ly8gUk9PVCA6IERSQUdPTjMwMTIwMDkgOiBXQSBpbiBSZWFsIExpZmUKI2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgRk9SKGksbCxyKSBmb3IoaW50IGkgPSBsIDsgaSA8PSByIDsgaSArKykKI2RlZmluZSBGT1JEKGkscixsKSBmb3IoaW50IGkgPSByIDsgaSA+PSBsIDsgaSAtLSkKI2RlZmluZSBSRVAoaSwgYSApIGZvcihpbnQgaSA9IDAgOyBpIDwgYSA7IGkgKysgKQojZGVmaW5lIGNvbXBhcmUodikgc29ydCgodikuYmVnaW4oKSwgKHYpLmVuZCgpKTsgKHYpLmVyYXNlKHVuaXF1ZSgodikuYmVnaW4oKSwgKHYpLmVuZCgpKSwgKHYpLmVuZCgpKTsKI2RlZmluZSBsbCBsb25nIGxvbmcKI2RlZmluZSBlbCAiXG4iCiNkZWZpbmUgZmkgZmlyc3QKI2RlZmluZSBzZSBzZWNvbmQKI2RlZmluZSBfUk9PVF8gaW50IG1haW4oKQojZGVmaW5lIE0gMTAwMDAwMDAwNwojZGVmaW5lIE1BWE4gMTAwMDAwMQojZGVmaW5lIElORiAoMWxsPDwzMCkKI2RlZmluZSBCTE9DSyA0MjUKI2RlZmluZSBOQU1FICJmaWxlIgojZGVmaW5lIGRlYnVnKGEpIGNvdXQgPDwgI2EgPDwgIiA9ICIgPDwgYSA8PCBlbmRsOwp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKbGwgbiwgbSwgcSA7CmxsIGFbTUFYTl0gOwpsbCByZXNbTUFYTiBdIDsKbGwgbXBbTUFYTiBdIDsKdmVjdG9yPGxsPiBwb3NbTUFYTiBdIDsKdmVjdG9yPGxsPiBjcHIgOwp2ZWN0b3I8cGFpcjxsbCxsbD4gPiBxdWVbTUFYTiBdIDsKdmVjdG9yPGxsPiBiaWcgOwoKc3RydWN0IFNlZyB7CiAgICBsbCB2YWxbTUFYTiA8PCAyIF0gOwogICAgdm9pZCB1cGRhdGUobGwgaWQsIGxsIGwsIGxsIHIsIGxsIHBvcywgbGwgdmFsdWUgKSB7CiAgICAgICAgaWYobCA9PSByICkgdmFsW2lkXSA9IG1heCh2YWxbaWRdLCB2YWx1ZSApIDsKICAgICAgICBlbHNlIHsKICAgICAgICAgICAgbGwgbSA9IGwgKyByID4+IDEgOwogICAgICAgICAgICBpZihtID49IHBvcyApIHVwZGF0ZShpZCA8PCAxLCBsLCBtLCBwb3MsIHZhbHVlICkgOwogICAgICAgICAgICBlbHNlIHVwZGF0ZShpZCA8PCAxIHwgMSwgbSArIDEsIHIsIHBvcywgdmFsdWUgKSA7CiAgICAgICAgICAgIHZhbFtpZF0gPSBtYXgodmFsW2lkIDw8IDFdLCB2YWxbaWQgPDwgMSB8IDEgXSkgOwogICAgICAgIH0KICAgIH0KCiAgICBsbCBnZXQobGwgaWQsIGxsIGwsIGxsIHIsIGxsIHUsIGxsIHYgKSB7CiAgICAgICAgaWYodSA+IHIgfHwgdiA8IGwgKSByZXR1cm4gMCA7CiAgICAgICAgaWYodSA8PSBsICYmIHYgPj0gciApIHJldHVybiB2YWxbaWRdIDsKICAgICAgICBsbCBtID0gbCArIHIgPj4gMSA7CiAgICAgICAgcmV0dXJuIG1heChnZXQoaWQgPDwgMSwgbCwgbSx1LCB2ICksIGdldChpZCA8PCAxIHwgMSwgbSArIDEsIHIsIHUsIHYgKSkgOwogICAgfQp9IHNlZyA7CgoKdm9pZCBpbml0KCkgewogICAgY2luID4+IG4gPj4gcSA7CiAgICBGT1IoaSwgMSwgbiApIGNpbiA+PiBhW2ldIDsKICAgIEZPUihpLCAxLCBuICkgY3ByLnB1c2hfYmFjayhhW2ldKSA7CiAgICBjb21wYXJlKGNwcikgOwogICAgRk9SKGksIDEsIG4gKSBhW2ldID0gbG93ZXJfYm91bmQoY3ByLmJlZ2luKCksIGNwci5lbmQoKSwgYVtpXSApIC0gY3ByLmJlZ2luKCkgKyAxIDsKICAgIEZPUihjbnQsIDEsIHEgKSB7CiAgICAgICAgbGwgbCwgciA7CiAgICAgICAgY2luID4+IGwgPj4gciA7CiAgICAgICAgcXVlW2xdLnB1c2hfYmFjayh7ciwgY250IH0gKSA7CiAgICB9Cn0KCnZvaWQgc29sdmUoKSB7CiAgICBGT1JEKGksIG4sIDEgKSB7CiAgICAgICAgcG9zW2FbaV1dLnB1c2hfYmFjayhpKSA7CiAgICAgICAgaWYocG9zW2FbaV1dLnNpemUoKSA8IEJMT0NLICApIHsKICAgICAgICBmb3IobGwgdiA6IHBvc1thW2ldXSApIHNlZy51cGRhdGUoMSAsIDAgLCBuICwgdiAsIHYgLSBpICkgOwogICAgICAgIH1lbHNlIGlmKCFtcFthW2ldXSYmIHBvc1thW2ldXS5zaXplKCkgPj0gQkxPQ0spCiAgICAgICAgewogICAgICAgIG1wW2FbaV1dID0gdHJ1ZSA7CiAgICAgICAgYmlnLnB1c2hfYmFjayhhW2ldKTsKICAgICAgICB9CiAgICAgICAgZm9yKGF1dG8gW3IgLCBpZCBdIDogcXVlW2ldICkgewogICAgICAgICAgICBsbCBhbnMgPSBzZWcuZ2V0KDEgLCAwICwgbiAsIGkgLCByICkgOwogICAgICAgICAgICBmb3IobGwgdiA6IGJpZyApIHsKICAgICAgICAgICAgICAgIGF1dG8gaXQgPSB1cHBlcl9ib3VuZChwb3NbaV0uYmVnaW4oKSAsIHBvc1tpXS5lbmQoKSAsIHIgKSA7CiAgICAgICAgICAgICAgICBpZihpdCA9PSBwb3NbaV0uYmVnaW4oKSApIGNvbnRpbnVlIDsKICAgICAgICAgICAgICAgIGFucyA9IG1heChhbnMgLCBhYnMoICpwcmV2KGl0KSAtIHBvc1tpXVswXSApICkgOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJlc1tpZF0gPSBhbnMgOwogICAgICAgIH0KICAgIH0KICAgIEZPUihpICwgMSAsIHEgKSBjb3V0IDw8IHJlc1tpXSA8PCBlbCA7Cn0KCl9ST09UXyB7CiAgICAvLyBmcmVvcGVuKE5BTUUiLmlucCIgLCAiciIgLCBzdGRpbik7CiAgICAvLyBmcmVvcGVuKE5BTUUiLm91dCIgLCAidyIsIHN0ZG91dCkgOwogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTsKICAgIGNpbi50aWUoMCk7CiAgICBjb3V0LnRpZSgwKTsKICAgIGludCB0ID0gMTsgLy8gY2luID4+IHQgOwogICAgd2hpbGUodC0tKSB7CiAgICAgICAgaW5pdCgpOwogICAgICAgIHNvbHZlKCk7CiAgICB9CiAgICByZXR1cm4gKDAmMCk7Cn0K