#include <bits/stdc++.h>
using namespace std;
#pragma GCC optimize("Ofast,unroll-loops")
#pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt")
#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
#define int long long
#define pii pair<int , int>
#define FOR(i , a , b) for(int i = (a);i <= (b);i++)
#define FOD(i , a , b) for(int i = (a);i >= (b);i--)
#define REP(i , n) for(int i = 1;i <= (n);i++)
#define REP0(i , n) for(int i = 0;i < (n);i++)
#define pb push_back
#define printclock cerr<<"\nTime : "<<1000*(double)clock()/(double)CLOCKS_PER_SEC<<"ms\n";
const int mod = 1e9 + 7,inf = 1e18;
const int mxn = 2e5 + 5;
int bsize;
int n, a[mxn];
int chia[mxn];
multiset<pii> ms;
multiset<pair<int, pii> > diff;
set<int> adj[mxn];
int deg[mxn];
int q, answer[mxn];
int moleft = 0, moright = 0;
struct query
{
int id, l, r;
} arr[mxn];
bool cmp(query a, query b)
{
if(chia[a.l] != chia[b.l]) return a.l < b.l;
else return a.r < b.r;
}
void add(int x)
{
if(moleft > moright) return;
if(ms.empty())
{
ms.insert({a[x], x});
return;
}
auto it = ms.lower_bound({a[x], -inf});
if(it != ms.begin()) it--;
int minpos = 0, mindiff = inf;
for(int cnt = 0; cnt < 3 && it != ms.end(); cnt++, it++)
{
auto p = *it;
int pos = p.second, val = p.first;
if(abs(a[x] - val) < mindiff)
{
mindiff = abs(a[x] - val);
minpos = pos;
}
}
ms.insert({a[x], x});
adj[x].insert(minpos);
adj[minpos].insert(x);
int a = x, b = minpos;
if(a > b) swap(a, b);
diff.insert({mindiff, {a, b}});
}
void del(int x)
{
if(ms.find({a[x], x}) != ms.end()) ms.erase(ms.find({a[x], x}));
for(auto v : adj[x])
{
adj[v].erase(x);
int d = abs(a[x] - a[v]);
int aa = v, bb = x;
if(aa > bb) swap(aa, bb);
if(diff.find({d, {aa, bb}}) != diff.end()) diff.erase(diff.find({d, {aa, bb}}));
if(adj[v].empty())
{
if((int)ms.size() > 0)
{
auto it = ms.lower_bound({a[v], -inf});
if(it != ms.begin()) it--;
int minpos = 0, mindiff = inf;
for(int cnt = 0; cnt < 3 && it != ms.end(); cnt++, it++)
{
auto p = *it;
int pos = p.second, val = p.first;
if(pos == v) continue;
if(abs(a[v] - val) < mindiff)
{
mindiff = abs(a[v] - val);
minpos = pos;
}
}
if(minpos != 0)
{
adj[v].insert(minpos);
adj[minpos].insert(v);
int a = minpos, b = v;
if(a > b) swap(a, b);
diff.insert({mindiff, {a, b}});
}
}
}
}
adj[x].clear();
}
int32_t main()
{
#define task "cpp"
if (fopen(task".inp", "r"))
{
freopen(task".inp", "r", stdin);
freopen(task".out", "w", stdout);
}
cin.tie(0)->sync_with_stdio(0);
cin >> n;
double s = sqrt((double)n);
double lg = log2((double)n);
lg = sqrt(lg);
s /= lg;
s += 50;
bsize = s;
FOR(i, 1, n)
{
cin >> a[i];
chia[i] = i / bsize;
}
cin >> q;
FOR(i, 1, q)
{
int l, r;
cin >> l >> r;
arr[i] = {i, l, r};
}
sort(arr + 1, arr + q + 1, cmp);
FOR(i, 1, q)
{
int id = arr[i].id, l = arr[i].l, r = arr[i].r;
while(moleft < l) del(moleft++);
while(moleft > l) add(--moleft);
while(moright < r) add(++moright);
while(moright > r) del(moright--);
auto p = *diff.begin();
answer[id] = p.first;
}
FOR(i, 1, q)
{
cout << answer[i] << '\n';
}
//printclock;
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNwcmFnbWEgR0NDIG9wdGltaXplKCJPZmFzdCx1bnJvbGwtbG9vcHMiKQojcHJhZ21hIEdDQyB0YXJnZXQoImF2eDIsYm1pLGJtaTIsbHpjbnQscG9wY250IikKI3ByYWdtYSBHQ0MgdGFyZ2V0KCJzc2Usc3NlMixzc2UzLHNzc2UzLHNzZTQscG9wY250LGFibSxtbXgsYXZ4LHR1bmU9bmF0aXZlIikKCiNkZWZpbmUgaW50IGxvbmcgbG9uZwojZGVmaW5lIHBpaSBwYWlyPGludCAsIGludD4KI2RlZmluZSBGT1IoaSAsIGEgLCBiKSBmb3IoaW50IGkgPSAoYSk7aSA8PSAoYik7aSsrKQojZGVmaW5lIEZPRChpICwgYSAsIGIpIGZvcihpbnQgaSA9IChhKTtpID49IChiKTtpLS0pCiNkZWZpbmUgUkVQKGkgLCBuKSBmb3IoaW50IGkgPSAxO2kgPD0gKG4pO2krKykKI2RlZmluZSBSRVAwKGkgLCBuKSBmb3IoaW50IGkgPSAwO2kgPCAobik7aSsrKQojZGVmaW5lIHBiIHB1c2hfYmFjawojZGVmaW5lIHByaW50Y2xvY2sgY2Vycjw8IlxuVGltZSA6ICI8PDEwMDAqKGRvdWJsZSljbG9jaygpLyhkb3VibGUpQ0xPQ0tTX1BFUl9TRUM8PCJtc1xuIjsKY29uc3QgaW50IG1vZCA9IDFlOSArIDcsaW5mID0gMWUxODsKY29uc3QgaW50IG14biA9IDJlNSArIDU7CmludCBic2l6ZTsKaW50IG4sIGFbbXhuXTsKaW50IGNoaWFbbXhuXTsKbXVsdGlzZXQ8cGlpPiBtczsKbXVsdGlzZXQ8cGFpcjxpbnQsIHBpaT4gPiBkaWZmOwpzZXQ8aW50PiBhZGpbbXhuXTsKaW50IGRlZ1tteG5dOwppbnQgcSwgYW5zd2VyW214bl07CmludCBtb2xlZnQgPSAwLCBtb3JpZ2h0ID0gMDsKCnN0cnVjdCBxdWVyeQp7CiAgICBpbnQgaWQsIGwsIHI7Cn0gYXJyW214bl07Cgpib29sIGNtcChxdWVyeSBhLCBxdWVyeSBiKQp7CiAgICBpZihjaGlhW2EubF0gIT0gY2hpYVtiLmxdKSByZXR1cm4gYS5sIDwgYi5sOwogICAgZWxzZSByZXR1cm4gYS5yIDwgYi5yOwp9CgoKCgoKdm9pZCBhZGQoaW50IHgpCnsKICAgIGlmKG1vbGVmdCA+IG1vcmlnaHQpIHJldHVybjsKICAgIGlmKG1zLmVtcHR5KCkpCiAgICB7CiAgICAgICAgbXMuaW5zZXJ0KHthW3hdLCB4fSk7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgYXV0byBpdCA9IG1zLmxvd2VyX2JvdW5kKHthW3hdLCAtaW5mfSk7CiAgICBpZihpdCAhPSBtcy5iZWdpbigpKSBpdC0tOwogICAgaW50IG1pbnBvcyA9IDAsIG1pbmRpZmYgPSBpbmY7CiAgICBmb3IoaW50IGNudCA9IDA7IGNudCA8IDMgJiYgaXQgIT0gbXMuZW5kKCk7IGNudCsrLCBpdCsrKQogICAgewogICAgICAgIGF1dG8gcCA9ICppdDsKICAgICAgICBpbnQgcG9zID0gcC5zZWNvbmQsIHZhbCA9IHAuZmlyc3Q7CiAgICAgICAgaWYoYWJzKGFbeF0gLSB2YWwpIDwgbWluZGlmZikKICAgICAgICB7CiAgICAgICAgICAgIG1pbmRpZmYgPSBhYnMoYVt4XSAtIHZhbCk7CiAgICAgICAgICAgIG1pbnBvcyA9IHBvczsKICAgICAgICB9CiAgICB9CiAgICBtcy5pbnNlcnQoe2FbeF0sIHh9KTsKICAgIGFkalt4XS5pbnNlcnQobWlucG9zKTsKICAgIGFkalttaW5wb3NdLmluc2VydCh4KTsKICAgIGludCBhID0geCwgYiA9IG1pbnBvczsKICAgIGlmKGEgPiBiKSBzd2FwKGEsIGIpOwogICAgZGlmZi5pbnNlcnQoe21pbmRpZmYsIHthLCBifX0pOwp9Cgp2b2lkIGRlbChpbnQgeCkKewogICAgaWYobXMuZmluZCh7YVt4XSwgeH0pICE9IG1zLmVuZCgpKSBtcy5lcmFzZShtcy5maW5kKHthW3hdLCB4fSkpOwogICAgZm9yKGF1dG8gdiA6IGFkalt4XSkKICAgIHsKICAgICAgICBhZGpbdl0uZXJhc2UoeCk7CiAgICAgICAgaW50IGQgPSBhYnMoYVt4XSAtIGFbdl0pOwogICAgICAgIGludCBhYSA9IHYsIGJiID0geDsKICAgICAgICBpZihhYSA+IGJiKSBzd2FwKGFhLCBiYik7CiAgICAgICAgaWYoZGlmZi5maW5kKHtkLCB7YWEsIGJifX0pICE9IGRpZmYuZW5kKCkpIGRpZmYuZXJhc2UoZGlmZi5maW5kKHtkLCB7YWEsIGJifX0pKTsKICAgICAgICBpZihhZGpbdl0uZW1wdHkoKSkKICAgICAgICB7CiAgICAgICAgICAgIGlmKChpbnQpbXMuc2l6ZSgpID4gMCkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgYXV0byBpdCA9IG1zLmxvd2VyX2JvdW5kKHthW3ZdLCAtaW5mfSk7CiAgICAgICAgICAgICAgICBpZihpdCAhPSBtcy5iZWdpbigpKSBpdC0tOwoKCiAgICAgICAgICAgICAgICBpbnQgbWlucG9zID0gMCwgbWluZGlmZiA9IGluZjsKICAgICAgICAgICAgICAgIGZvcihpbnQgY250ID0gMDsgY250IDwgMyAmJiBpdCAhPSBtcy5lbmQoKTsgY250KyssIGl0KyspCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgYXV0byBwID0gKml0OwogICAgICAgICAgICAgICAgICAgIGludCBwb3MgPSBwLnNlY29uZCwgdmFsID0gcC5maXJzdDsKICAgICAgICAgICAgICAgICAgICBpZihwb3MgPT0gdikgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgaWYoYWJzKGFbdl0gLSB2YWwpIDwgbWluZGlmZikKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIG1pbmRpZmYgPSBhYnMoYVt2XSAtIHZhbCk7CiAgICAgICAgICAgICAgICAgICAgICAgIG1pbnBvcyA9IHBvczsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZihtaW5wb3MgIT0gMCkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBhZGpbdl0uaW5zZXJ0KG1pbnBvcyk7CiAgICAgICAgICAgICAgICAgICAgYWRqW21pbnBvc10uaW5zZXJ0KHYpOwogICAgICAgICAgICAgICAgICAgIGludCBhID0gbWlucG9zLCBiID0gdjsKICAgICAgICAgICAgICAgICAgICBpZihhID4gYikgc3dhcChhLCBiKTsKICAgICAgICAgICAgICAgICAgICBkaWZmLmluc2VydCh7bWluZGlmZiwge2EsIGJ9fSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgYWRqW3hdLmNsZWFyKCk7Cn0KaW50MzJfdCBtYWluKCkKewojZGVmaW5lIHRhc2sgImNwcCIKICAgIGlmIChmb3Blbih0YXNrIi5pbnAiLCAiciIpKQogICAgewogICAgICAgIGZyZW9wZW4odGFzayIuaW5wIiwgInIiLCBzdGRpbik7CiAgICAgICAgZnJlb3Blbih0YXNrIi5vdXQiLCAidyIsIHN0ZG91dCk7CiAgICB9CiAgICBjaW4udGllKDApLT5zeW5jX3dpdGhfc3RkaW8oMCk7CiAgICBjaW4gPj4gbjsKICAgIGRvdWJsZSBzID0gc3FydCgoZG91YmxlKW4pOwogICAgZG91YmxlIGxnID0gbG9nMigoZG91YmxlKW4pOwogICAgbGcgPSBzcXJ0KGxnKTsKICAgIHMgLz0gbGc7CiAgICBzICs9IDUwOwogICAgYnNpemUgPSBzOwogICAgRk9SKGksIDEsIG4pCiAgICB7CiAgICAgICAgY2luID4+IGFbaV07CiAgICAgICAgY2hpYVtpXSA9IGkgLyBic2l6ZTsKICAgIH0KCiAgICBjaW4gPj4gcTsKCiAgICBGT1IoaSwgMSwgcSkKICAgIHsKICAgICAgICBpbnQgbCwgcjsKICAgICAgICBjaW4gPj4gbCA+PiByOwogICAgICAgIGFycltpXSA9IHtpLCBsLCByfTsKICAgIH0KCiAgICBzb3J0KGFyciArIDEsIGFyciArIHEgKyAxLCBjbXApOwoKCiAgICBGT1IoaSwgMSwgcSkKICAgIHsKICAgICAgICBpbnQgaWQgPSBhcnJbaV0uaWQsIGwgPSBhcnJbaV0ubCwgciA9IGFycltpXS5yOwogICAgICAgIHdoaWxlKG1vbGVmdCA8IGwpIGRlbChtb2xlZnQrKyk7CiAgICAgICAgd2hpbGUobW9sZWZ0ID4gbCkgYWRkKC0tbW9sZWZ0KTsKICAgICAgICB3aGlsZShtb3JpZ2h0IDwgcikgYWRkKCsrbW9yaWdodCk7CiAgICAgICAgd2hpbGUobW9yaWdodCA+IHIpIGRlbChtb3JpZ2h0LS0pOwogICAgICAgIGF1dG8gcCA9ICpkaWZmLmJlZ2luKCk7CiAgICAgICAgYW5zd2VyW2lkXSA9IHAuZmlyc3Q7CiAgICB9CgogICAgRk9SKGksIDEsIHEpCiAgICB7CiAgICAgICAgY291dCA8PCBhbnN3ZXJbaV0gPDwgJ1xuJzsKICAgIH0KCgogICAgLy9wcmludGNsb2NrOwogICAgcmV0dXJuIDA7Cn0K