#include<bits/stdc++.h>
using namespace std;
/*#include<ext/pb_ds/assoc_container.hpp>
#include<ext/pb_ds/tree_policy.hpp>
using namespace __gnu_pbds;
/*template <typename T>
using ordered_set = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;
*/ typedef long long ll;
typedef long double ld;
typedef pair< ll,ll> pl;
typedef pair< int ,int > pii;
#define LOCAL 0
#define dbg(x) cerr << #x << " is " << x << " "
#define gll(x) scanf("%lld",&x)
#define gll2(x,y) scanf("%lld%lld",&x,&y)
#define gll3(x,y,z) scanf("%lld%lld%lld",&x,&y,&y)
#define gllarr(arr,n) f(i,n) gll(arr[i]);
#define sz(x) ((int)x.size())
#define s(x) sort(x.begin(),x.end())
#define all(v) v.begin(),v.end()
#define rs(v) { s(v) ; r(v) ; }
#define r(v) {reverse(all(v));}
#define pb push_back
#define mp make_pair
#define F first
#define S second
#define f(i,n) for(int i=0;i<n;i++)
#define fr(i,n) for(int i=n-1;i>=0;i--)
#define rep(i,a,b) for(int i=a;i<=b;i++)
#define repr(i,a,b) for(int i=a;i>=b;i--)
const ll mod = 1000000007 ;
const ll inf = ( ll) 1e16 ;
const ld eps = 1e-12 ;
const ll N = ( int ) 1e5 + 55 ;
const ll LOGN = 19 ;
const ld PI = 3.14159265358979323846 ;
ll mul( ll a, ll b, ll m = mod) { return ( ll) ( a * b) % m; }
ll add( ll a, ll b, ll m = mod) { a + = b; if ( a >= m) a - = m; if ( a < 0 ) a + = m; return a; }
ll power( ll a, ll b, ll m = mod) { if ( b == 0 ) return 1 ; if ( b == 1 ) return ( a % m) ; ll x = power( a, b / 2 , m) ; x = mul( x, x, m) ; if ( b % 2 ) x = mul( x, a, m) ; return x; }
int n,m,q;
int a[ N] ;
pair< pair< int ,int > ,int > queries[ N] ;
int blocksize;
set< int > freq[ N] ;
int segtree[ 4 * N] ;
int answers[ N] ;
void update( int node,int start,int end,int val,int idx)
{
if ( start == end)
{
segtree[ node] = val;
return ;
}
int mid = ( start+ end) >> 1 ;
int lc = 2 * node + 1 ;
int rc = lc + 1 ;
if ( idx>= start && idx<= mid)
update( lc,start,mid,val,idx) ;
else
update( rc,mid+ 1 ,end,val,idx) ;
segtree[ node] = max( segtree[ lc] ,segtree[ rc] ) ;
}
int query( int node,int start,int end,int qs,int qe)
{
if ( end< start || end< qs || start> qs)
{
return - 1 ;
}
if ( qs<= start && qe>= end)
return segtree[ node] ;
int mid = ( start+ end) >> 1 ;
int lc = 2 * node + 1 ;
int rc = lc + 1 ;
return max( query( lc,start,mid,qs,qe) ,query( rc,mid+ 1 ,end,qs,qe) ) ;
}
bool comp( pair< pair< int ,int > ,int > & a, pair< pair< int ,int > ,int > & b)
{
int a1 = a.first .first / blocksize;
int a2 = a.first .second ;
int b1 = b.first .first / blocksize;
int b2 = b.first .second ;
return a1! = b1 ? a1 < b1 : a2 < b2;
}
inline void add( int val,int idx)
{
freq[ val] .insert ( idx) ;
int to = 0 ;
if ( freq[ val] .size ( ) > 1 )
{
//int last = freq[val].size();
//to = freq[val][0] - freq[val][last-1];
to = * freq[ val] .rbegin ( ) - * freq[ val] .begin ( ) ;
}
update( 0 ,0 ,N- 1 ,to,val) ;
}
inline void remove ( int val,int idx)
{
freq[ val] .erase ( idx) ;
int to = 0 ;
if ( freq[ val] .size ( ) > 1 )
{
//int last = freq[val].size();
//to = freq[val][0] - freq[val][last-1];
to = * freq[ val] .rbegin ( ) - * freq[ val] .begin ( ) ;
}
update( 0 ,0 ,N- 1 ,to,val) ;
}
int main( )
{
ios_base:: sync_with_stdio ( false ) ;
cin .tie ( NULL ) ;
if ( LOCAL)
{
freopen ( "C:\\ Users\\ Dishant\\ Desktop\\ Collection-DEV c++\\ input.txt" ,"r" ,stdin ) ;
freopen ( "C:\\ Users\\ Dishant\\ Desktop\\ Collection-DEV c++\\ output.txt" ,"w" ,stdout ) ;
}
cin >> n>> m>> q;
blocksize = static_cast < int > ( sqrt ( n) ) ;
f( i,n)
cin >> a[ i] ;
f( i,q)
{
cin >> queries[ i] .first .first >> queries[ i] .first .second ;
queries[ i] .second = i;
}
sort( queries,queries+ q,comp) ;
int lptr = 0 ;
int rptr = - 1 ;
f( i,q)
{
int l = queries[ i] .first .first - 1 ;
int r = queries[ i] .first .second - 1 ;
while ( lptr < l)
{
remove ( a[ lptr] ,lptr) ;
lptr++ ;
}
while ( rptr < r)
{
rptr++ ;
add( a[ rptr] ,rptr) ;
}
while ( lptr > l)
{
lptr-- ;
add( a[ lptr] ,lptr) ;
}
while ( rptr > r)
{
remove ( a[ rptr] ,rptr) ;
rptr-- ;
}
//cout<<queries[i].second<<" "<<segtree[0]<<endl;
answers[ queries[ i] .second ] = query( 0 ,0 ,N- 1 ,0 ,m) ;
}
f( i,q)
cout << answers[ i] << "\n " ;
return 0 ;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLyojaW5jbHVkZTxleHQvcGJfZHMvYXNzb2NfY29udGFpbmVyLmhwcD4KI2luY2x1ZGU8ZXh0L3BiX2RzL3RyZWVfcG9saWN5LmhwcD4KdXNpbmcgbmFtZXNwYWNlIF9fZ251X3BiZHM7Ci8qdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CnVzaW5nIG9yZGVyZWRfc2V0ID0gdHJlZTxULCBudWxsX3R5cGUsIGxlc3M8VD4sIHJiX3RyZWVfdGFnLCB0cmVlX29yZGVyX3N0YXRpc3RpY3Nfbm9kZV91cGRhdGU+OwoqL3R5cGVkZWYgbG9uZyBsb25nIGxsOwp0eXBlZGVmIGxvbmcgZG91YmxlIGxkOwp0eXBlZGVmIHBhaXI8bGwsbGw+IHBsOwp0eXBlZGVmIHBhaXI8aW50LGludD4gcGlpOwoKI2RlZmluZSBMT0NBTCAwCiNkZWZpbmUgZGJnKHgpIGNlcnIgPDwgI3ggPDwgIiBpcyAiIDw8IHggPDwgIiAiCiNkZWZpbmUgZ2xsKHgpIHNjYW5mKCIlbGxkIiwmeCkKI2RlZmluZSBnbGwyKHgseSkgc2NhbmYoIiVsbGQlbGxkIiwmeCwmeSkKI2RlZmluZSBnbGwzKHgseSx6KSBzY2FuZigiJWxsZCVsbGQlbGxkIiwmeCwmeSwmeSkKI2RlZmluZSBnbGxhcnIoYXJyLG4pIGYoaSxuKSBnbGwoYXJyW2ldKTsKI2RlZmluZSBzeih4KSAoKGludCl4LnNpemUoKSkKI2RlZmluZSBzKHgpIHNvcnQoeC5iZWdpbigpLHguZW5kKCkpCiNkZWZpbmUgYWxsKHYpIHYuYmVnaW4oKSx2LmVuZCgpCiNkZWZpbmUgcnModikgeyBzKHYpIDsgcih2KSA7IH0KI2RlZmluZSByKHYpIHtyZXZlcnNlKGFsbCh2KSk7fQojZGVmaW5lIHBiIHB1c2hfYmFjawojZGVmaW5lIG1wIG1ha2VfcGFpcgojZGVmaW5lIEYgZmlyc3QKI2RlZmluZSBTIHNlY29uZAojZGVmaW5lIGYoaSxuKSBmb3IoaW50IGk9MDtpPG47aSsrKQojZGVmaW5lIGZyKGksbikgZm9yKGludCBpPW4tMTtpPj0wO2ktLSkKI2RlZmluZSByZXAoaSxhLGIpIGZvcihpbnQgaT1hO2k8PWI7aSsrKQojZGVmaW5lIHJlcHIoaSxhLGIpIGZvcihpbnQgaT1hO2k+PWI7aS0tKQoKY29uc3QgbGwgbW9kID0gMTAwMDAwMDAwNzsKY29uc3QgbGwgaW5mID0gKGxsKTFlMTY7CmNvbnN0IGxkIGVwcyA9IDFlLTEyOwpjb25zdCBsbCBOID0gKGludCkxZTUrNTU7CmNvbnN0IGxsIExPR04gPSAxOTsKY29uc3QgbGQgUEkgPSAzLjE0MTU5MjY1MzU4OTc5MzIzODQ2OwpsbCBtdWwobGwgYSwgbGwgYiwgbGwgbSA9IG1vZCkgeyByZXR1cm4gKGxsKShhICogYikgJSBtO30KbGwgYWRkKGxsIGEsIGxsIGIsIGxsIG0gPSBtb2QpIHsgYSArPSBiOyBpZihhID49IG0pIGEgLT0gbTsgaWYoYSA8IDApIGEgKz0gbTsgcmV0dXJuIGE7fQpsbCBwb3dlcihsbCBhLCBsbCBiLCBsbCBtID0gbW9kKSB7IGlmKGIgPT0gMCkgcmV0dXJuIDE7IGlmKGIgPT0gMSkgcmV0dXJuIChhICUgbSk7IGxsIHggPSBwb3dlcihhLCBiIC8gMiwgbSk7IHggPSBtdWwoeCwgeCwgbSk7IGlmKGIgJSAyKSB4ID0gbXVsKHgsIGEsIG0pOyByZXR1cm4geDt9CgppbnQgbixtLHE7CmludCBhW05dOwpwYWlyPHBhaXI8aW50LGludD4saW50PiBxdWVyaWVzW05dOwppbnQgYmxvY2tzaXplOwpzZXQ8aW50PiBmcmVxW05dOwppbnQgc2VndHJlZVs0Kk5dOwppbnQgYW5zd2Vyc1tOXTsKCnZvaWQgdXBkYXRlKGludCBub2RlLGludCBzdGFydCxpbnQgZW5kLGludCB2YWwsaW50IGlkeCkKewogICAgaWYoc3RhcnQgPT0gZW5kKQogICAgewogICAgICAgIHNlZ3RyZWVbbm9kZV0gPSB2YWw7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgaW50IG1pZCA9IChzdGFydCtlbmQpPj4xOwogICAgaW50IGxjID0gMipub2RlICsgMTsKICAgIGludCByYyA9IGxjICsgMTsKICAgIGlmKGlkeD49c3RhcnQgJiYgaWR4PD1taWQpCiAgICAgICAgdXBkYXRlKGxjLHN0YXJ0LG1pZCx2YWwsaWR4KTsKICAgIGVsc2UKICAgICAgICB1cGRhdGUocmMsbWlkKzEsZW5kLHZhbCxpZHgpOwogICAgc2VndHJlZVtub2RlXSA9IG1heChzZWd0cmVlW2xjXSxzZWd0cmVlW3JjXSk7Cn0KCmludCBxdWVyeShpbnQgbm9kZSxpbnQgc3RhcnQsaW50IGVuZCxpbnQgcXMsaW50IHFlKQp7CiAgICBpZihlbmQ8c3RhcnQgfHwgZW5kPHFzIHx8IHN0YXJ0PnFzKQogICAgewogICAgICAgIHJldHVybiAtMTsKICAgIH0KICAgIGlmKHFzPD1zdGFydCAmJiBxZT49ZW5kKQogICAgICAgIHJldHVybiBzZWd0cmVlW25vZGVdOwogICAgaW50IG1pZCA9IChzdGFydCtlbmQpPj4xOwogICAgaW50IGxjID0gMipub2RlICsgMTsKICAgIGludCByYyA9IGxjICsgMTsKICAgIHJldHVybiBtYXgocXVlcnkobGMsc3RhcnQsbWlkLHFzLHFlKSxxdWVyeShyYyxtaWQrMSxlbmQscXMscWUpKTsKfQoKYm9vbCBjb21wKHBhaXI8cGFpcjxpbnQsaW50PixpbnQ+JiBhLCBwYWlyPHBhaXI8aW50LGludD4saW50PiYgYikKewogICAgaW50IGExID0gYS5maXJzdC5maXJzdC9ibG9ja3NpemU7CiAgICBpbnQgYTIgPSBhLmZpcnN0LnNlY29uZDsKICAgIGludCBiMSA9IGIuZmlyc3QuZmlyc3QvYmxvY2tzaXplOwogICAgaW50IGIyID0gYi5maXJzdC5zZWNvbmQ7CiAgICByZXR1cm4gYTEhPWIxID8gYTEgPCBiMSA6IGEyIDwgYjI7Cn0KCmlubGluZSB2b2lkIGFkZChpbnQgdmFsLGludCBpZHgpCnsKICAgIGZyZXFbdmFsXS5pbnNlcnQoaWR4KTsKICAgIGludCB0byA9IDA7CiAgICBpZihmcmVxW3ZhbF0uc2l6ZSgpPjEpCiAgICB7CiAgICAgICAgLy9pbnQgbGFzdCA9IGZyZXFbdmFsXS5zaXplKCk7CiAgICAgICAgLy90byA9IGZyZXFbdmFsXVswXSAtIGZyZXFbdmFsXVtsYXN0LTFdOwogICAgICAgIHRvID0gKmZyZXFbdmFsXS5yYmVnaW4oKSAtICpmcmVxW3ZhbF0uYmVnaW4oKTsKICAgIH0KICAgIHVwZGF0ZSgwLDAsTi0xLHRvLHZhbCk7Cn0KCmlubGluZSB2b2lkIHJlbW92ZShpbnQgdmFsLGludCBpZHgpCnsKICAgIGZyZXFbdmFsXS5lcmFzZShpZHgpOwogICAgaW50IHRvID0gMDsKICAgIGlmKGZyZXFbdmFsXS5zaXplKCk+MSkKICAgIHsKICAgICAgICAvL2ludCBsYXN0ID0gZnJlcVt2YWxdLnNpemUoKTsKICAgICAgICAvL3RvID0gZnJlcVt2YWxdWzBdIC0gZnJlcVt2YWxdW2xhc3QtMV07CiAgICAgICAgdG8gPSAqZnJlcVt2YWxdLnJiZWdpbigpIC0gKmZyZXFbdmFsXS5iZWdpbigpOwogICAgfQogICAgdXBkYXRlKDAsMCxOLTEsdG8sdmFsKTsKfQoKaW50IG1haW4oKQp7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKICAgIGNpbi50aWUoTlVMTCk7CiAgICBpZihMT0NBTCkKICAgIHsKICAgICAgICBmcmVvcGVuKCJDOlxcVXNlcnNcXERpc2hhbnRcXERlc2t0b3BcXENvbGxlY3Rpb24tREVWIGMrK1xcaW5wdXQudHh0IiwiciIsc3RkaW4pOwogICAgICAgIGZyZW9wZW4oIkM6XFxVc2Vyc1xcRGlzaGFudFxcRGVza3RvcFxcQ29sbGVjdGlvbi1ERVYgYysrXFxvdXRwdXQudHh0IiwidyIsc3Rkb3V0KTsKICAgIH0KICAgIGNpbj4+bj4+bT4+cTsKICAgIGJsb2Nrc2l6ZSA9IHN0YXRpY19jYXN0PGludD4oc3FydChuKSk7CiAgICBmKGksbikKICAgICAgICBjaW4+PmFbaV07CiAgICBmKGkscSkKICAgIHsKICAgICAgICBjaW4+PnF1ZXJpZXNbaV0uZmlyc3QuZmlyc3Q+PnF1ZXJpZXNbaV0uZmlyc3Quc2Vjb25kOwogICAgICAgIHF1ZXJpZXNbaV0uc2Vjb25kID0gaTsKICAgIH0KICAgIHNvcnQocXVlcmllcyxxdWVyaWVzK3EsY29tcCk7CiAgICBpbnQgbHB0ciA9IDA7CiAgICBpbnQgcnB0ciA9IC0xOwogICAgZihpLHEpCiAgICB7CiAgICAgICAgaW50IGwgPSBxdWVyaWVzW2ldLmZpcnN0LmZpcnN0IC0gMTsKICAgICAgICBpbnQgciA9IHF1ZXJpZXNbaV0uZmlyc3Quc2Vjb25kIC0gMTsKICAgICAgICB3aGlsZShscHRyIDwgbCkKICAgICAgICB7CiAgICAgICAgICAgIHJlbW92ZShhW2xwdHJdLGxwdHIpOwogICAgICAgICAgICBscHRyKys7CiAgICAgICAgfQogICAgICAgIHdoaWxlKHJwdHIgPCByKQogICAgICAgIHsKICAgICAgICAgICAgcnB0cisrOwogICAgICAgICAgICBhZGQoYVtycHRyXSxycHRyKTsKICAgICAgICB9CiAgICAgICAgd2hpbGUobHB0ciA+IGwpCiAgICAgICAgewogICAgICAgICAgICBscHRyLS07CiAgICAgICAgICAgIGFkZChhW2xwdHJdLGxwdHIpOwogICAgICAgIH0KICAgICAgICB3aGlsZShycHRyID4gcikKICAgICAgICB7CiAgICAgICAgICAgIHJlbW92ZShhW3JwdHJdLHJwdHIpOwogICAgICAgICAgICBycHRyLS07CiAgICAgICAgfQogICAgICAgIC8vY291dDw8cXVlcmllc1tpXS5zZWNvbmQ8PCIgIjw8c2VndHJlZVswXTw8ZW5kbDsKICAgICAgICBhbnN3ZXJzW3F1ZXJpZXNbaV0uc2Vjb25kXSA9IHF1ZXJ5KDAsMCxOLTEsMCxtKTsKICAgIH0KICAgIGYoaSxxKQogICAgICAgIGNvdXQ8PGFuc3dlcnNbaV08PCJcbiI7CiAgICByZXR1cm4gMDsKfQ==