#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e5+10;
//no bug but runtime
int n, d[maxn], pos[maxn];
pair<int, int> x[maxn];
int ks(int a, int b, int c)
{
return max({a, b, c});
}
int main()
{
freopen("test.inp", "r", stdin);
freopen("test.out", "w", stdout);
int n, q;
cin>>n>>q;
for(int i = 0; i<n; i++)
{
cin>>d[i];
}
for(int i = 1; i <= n; i++)
{
x[i] = make_pair(d[i] ,i);
}
sort(d+1, d+n+1);
sort(x+1, x+n+1);
for(int i = 0; i<n; i++)
{
int vt = x[i].second;
pos[vt] = i;
}
//for(int c: pos) cout<<c<< " =) "<<endl;
// pair<int, int>
while(q--)
{
///30%, 40%(bf)
int u, v;
cin>>u>>v;
u = pos[u];
v = pos[v]; /// lấy được vị trí ở mảng đã sắp xếp
//y--;
//int a = d[x];
//int b = d[y];
//find a, b
long long l = min(x[u].first, x[v].first);
long long r = max(x[u].first, x[v].first);
long long mid = (l + r) / 2;
int p = lower_bound(d+1,d+n+1, mid) - d;
long long res = +1e6;
// (d[p-1], l, r)
res = max(abs(r- d[p-1]), abs(l - d[p-1]));
res = max(abs(r- d[p]), abs(l - d[p]));
res = max(abs(r- d[p+1]), abs(l - d[p+1]));
// (d[p], l, r)
// (d[p+1], l, r)
//int b = ks(d[p - 1], l, r);
// int c = ks(d[p], l, r);
//int B = ks(d[p+1], l , r);
cout<<res<<"\n";
}
//return 0;
}
ICAgICNpbmNsdWRlIDxiaXRzL3N0ZGMrKy5oPgogICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCiAgICBjb25zdCBpbnQgbWF4biA9IDFlNSsxMDsKICAgIC8vbm8gYnVnIGJ1dCBydW50aW1lCiAgICBpbnQgbiwgZFttYXhuXSwgcG9zW21heG5dOwogICAgcGFpcjxpbnQsIGludD4geFttYXhuXTsKICAgIGludCBrcyhpbnQgYSwgaW50IGIsIGludCBjKQogICAgewogICAgICAgIHJldHVybiBtYXgoe2EsIGIsIGN9KTsKICAgIH0KICAgIGludCBtYWluKCkKICAgIHsKICAgICAgICBmcmVvcGVuKCJ0ZXN0LmlucCIsICJyIiwgc3RkaW4pOwogICAgICAgIGZyZW9wZW4oInRlc3Qub3V0IiwgInciLCBzdGRvdXQpOwogICAgICAgIGludCBuLCBxOwogICAgICAgIGNpbj4+bj4+cTsKICAgICAgICBmb3IoaW50IGkgPSAwOyBpPG47IGkrKykKICAgICAgICB7CiAgICAgICAgICAgIGNpbj4+ZFtpXTsKICAgICAgICB9CiAgICAgICAgZm9yKGludCBpID0gMTsgaSA8PSBuOyBpKyspCiAgICAgICAgewogICAgICAgICAgICB4W2ldID0gbWFrZV9wYWlyKGRbaV0gLGkpOwogICAgICAgIH0KICAgICAgICBzb3J0KGQrMSwgZCtuKzEpOwogICAgICAgIHNvcnQoeCsxLCB4K24rMSk7CiAgICAgICAgZm9yKGludCBpID0gMDsgaTxuOyBpKyspCiAgICAgICAgewogICAgICAgICAgICBpbnQgdnQgPSB4W2ldLnNlY29uZDsKICAgICAgICAgICAgcG9zW3Z0XSA9IGk7CiAgICAgICAgfQogICAgICAgIC8vZm9yKGludCBjOiBwb3MpIGNvdXQ8PGM8PCAiID0pICI8PGVuZGw7CiAgICAgICAvLyBwYWlyPGludCwgaW50PgogICAgICAgIHdoaWxlKHEtLSkKICAgICAgICB7CiAgICAgICAgICAgIC8vLzMwJSwgNDAlKGJmKQogICAgICAgICAgICBpbnQgdSwgdjsKICAgICAgICAgICAgY2luPj51Pj52OwogICAgICAgICAgICAgdSA9IHBvc1t1XTsKICAgICAgICAgICAgIHYgPSBwb3Nbdl07IC8vLyBs4bqleSDEkcaw4bujYyB24buLIHRyw60g4bufIG3huqNuZyDEkcOjIHPhuq9wIHjhur9wCiAgICAgICAgICAgIC8veS0tOwoKICAgICAgICAgICAgLy9pbnQgYSA9IGRbeF07CiAgICAgICAgICAgIC8vaW50IGIgPSBkW3ldOwogICAgICAgICAgICAvL2ZpbmQgYSwgYgoKICAgICAgICAgICAgbG9uZyBsb25nIGwgPSBtaW4oeFt1XS5maXJzdCwgeFt2XS5maXJzdCk7CiAgICAgICAgICAgIGxvbmcgbG9uZyByID0gbWF4KHhbdV0uZmlyc3QsIHhbdl0uZmlyc3QpOwoKICAgICAgICAgICAgbG9uZyBsb25nIG1pZCA9IChsICsgcikgLyAyOwoKICAgICAgICAgICAgaW50IHAgPSBsb3dlcl9ib3VuZChkKzEsZCtuKzEsIG1pZCkgLSBkOwogICAgICAgICAgICBsb25nIGxvbmcgcmVzID0gKzFlNjsKICAgICAgICAgICAgLy8gKGRbcC0xXSwgbCwgcikKICAgICAgICAgICAgcmVzID0gbWF4KGFicyhyLSAgZFtwLTFdKSwgYWJzKGwgLSBkW3AtMV0pKTsKCiAgICAgICAgICAgIHJlcyA9IG1heChhYnMoci0gIGRbcF0pLCBhYnMobCAtIGRbcF0pKTsKCiAgICAgICAgICAgIHJlcyA9IG1heChhYnMoci0gIGRbcCsxXSksIGFicyhsIC0gZFtwKzFdKSk7CiAgICAgICAgICAgIC8vIChkW3BdLCBsLCByKQoKCiAgICAgICAgICAgIC8vIChkW3ArMV0sIGwsIHIpCiAgICAgICAgICAgIC8vaW50IGIgPSBrcyhkW3AgLSAxXSwgbCwgcik7CiAgICAgICAgICAgLy8gaW50IGMgPSBrcyhkW3BdLCBsLCByKTsKICAgICAgICAgICAgLy9pbnQgQiA9IGtzKGRbcCsxXSwgbCAsIHIpOwogICAgICAgICAgICBjb3V0PDxyZXM8PCJcbiI7CgogICAgICAgIH0KCiAgICAgICAgLy9yZXR1cm4gMDsKICAgIH0K