#include <bits/stdc++.h>
using namespace std;
#define int long long
#define fi first
#define se second
#define pb push_back
#define all(x) x.begin(),x.end()
#define task "mpve"
template<class x,class y>
bool minimize(x &a,const y &b){
if(a > b){
a = b;
return true;
}else return false;
}
template<class x,class y>
bool maximize(x &a,const y &b){
if(a < b){
a = b;
return true;
}else return false;
}
typedef pair<int,int> pii;
constexpr int MAXN=1e6,MOD=1e9+7,INF=1e18;
int n,m,l,r,res,ans,k,u,v;
int a,b,w[MAXN],vist[MAXN];
vector<pii> adj[MAXN];
bool check(int w){
fill(vist+1,vist+n+1,0);
queue<int> q;
q.push(a);
vist[a] = 1;
while(q.size()){
int v = q.front();
q.pop();
for(pii u : adj[v]){
if(vist[u.fi]) continue;
if(u.se <= w){
vist[u.fi] = 1;
q.push(u.fi);
if(u.fi == b) return true;
}
}
}
return false;
}
int32_t main(){
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
if(fopen(task".INP","r")){
freopen(task".INP","r",stdin);
freopen(task".OUT","w",stdout);
}
cin >> n >> a >> b;
for(int i=1;i<=n;i++){
cin >> w[i];
}
u = INF;
while(cin >> l >> r){
minimize(u,abs(w[r]-w[l]));
maximize(v,abs(w[r]-w[l]));
adj[l].pb(make_pair(r,abs(w[r]-w[l])));
adj[r].pb(make_pair(l,abs(w[r]-w[l])));
}
l = u,r = v;
ans = -1;
while(l<=r){
int m = (l+r)>>1;
if(check(m)){
ans = m;
r = m-1;
}else l = m+1;
}
cout << ans;
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgaW50IGxvbmcgbG9uZwojZGVmaW5lIGZpIGZpcnN0CiNkZWZpbmUgc2Ugc2Vjb25kCiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgYWxsKHgpIHguYmVnaW4oKSx4LmVuZCgpCiNkZWZpbmUgdGFzayAibXB2ZSIKdGVtcGxhdGU8Y2xhc3MgeCxjbGFzcyB5PgogICAgYm9vbCBtaW5pbWl6ZSh4ICZhLGNvbnN0IHkgJmIpewogICAgICAgIGlmKGEgPiBiKXsKICAgICAgICAgICAgYSA9IGI7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH1lbHNlIHJldHVybiBmYWxzZTsKICAgIH0KdGVtcGxhdGU8Y2xhc3MgeCxjbGFzcyB5PgogICAgYm9vbCBtYXhpbWl6ZSh4ICZhLGNvbnN0IHkgJmIpewogICAgICAgIGlmKGEgPCBiKXsKICAgICAgICAgICAgYSA9IGI7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH1lbHNlIHJldHVybiBmYWxzZTsKICAgIH0KdHlwZWRlZiBwYWlyPGludCxpbnQ+IHBpaTsKY29uc3RleHByIGludCBNQVhOPTFlNixNT0Q9MWU5KzcsSU5GPTFlMTg7CmludCBuLG0sbCxyLHJlcyxhbnMsayx1LHY7CmludCBhLGIsd1tNQVhOXSx2aXN0W01BWE5dOwp2ZWN0b3I8cGlpPiBhZGpbTUFYTl07CmJvb2wgY2hlY2soaW50IHcpewogICAgZmlsbCh2aXN0KzEsdmlzdCtuKzEsMCk7CiAgICBxdWV1ZTxpbnQ+IHE7CiAgICBxLnB1c2goYSk7CiAgICB2aXN0W2FdID0gMTsKICAgIHdoaWxlKHEuc2l6ZSgpKXsKICAgICAgICBpbnQgdiA9IHEuZnJvbnQoKTsKICAgICAgICBxLnBvcCgpOwogICAgICAgIGZvcihwaWkgdSA6IGFkalt2XSl7CiAgICAgICAgICAgIGlmKHZpc3RbdS5maV0pIGNvbnRpbnVlOwogICAgICAgICAgICBpZih1LnNlIDw9IHcpewogICAgICAgICAgICAgICAgdmlzdFt1LmZpXSA9IDE7CiAgICAgICAgICAgICAgICBxLnB1c2godS5maSk7CiAgICAgICAgICAgICAgICBpZih1LmZpID09IGIpIHJldHVybiB0cnVlOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIGZhbHNlOwp9CmludDMyX3QgbWFpbigpewogICAgaW9zOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwogICAgY2luLnRpZSgwKTtjb3V0LnRpZSgwKTsKICAgIGlmKGZvcGVuKHRhc2siLklOUCIsInIiKSl7CiAgICAgICAgZnJlb3Blbih0YXNrIi5JTlAiLCJyIixzdGRpbik7CiAgICAgICAgZnJlb3Blbih0YXNrIi5PVVQiLCJ3IixzdGRvdXQpOwogICAgfQogICAgY2luID4+IG4gPj4gYSA+PiBiOwogICAgZm9yKGludCBpPTE7aTw9bjtpKyspewogICAgICAgIGNpbiA+PiB3W2ldOwogICAgfQogICAgdSA9IElORjsKICAgIHdoaWxlKGNpbiA+PiBsID4+IHIpewogICAgICAgIG1pbmltaXplKHUsYWJzKHdbcl0td1tsXSkpOwogICAgICAgIG1heGltaXplKHYsYWJzKHdbcl0td1tsXSkpOwogICAgICAgIGFkaltsXS5wYihtYWtlX3BhaXIocixhYnMod1tyXS13W2xdKSkpOwogICAgICAgIGFkaltyXS5wYihtYWtlX3BhaXIobCxhYnMod1tyXS13W2xdKSkpOwogICAgfQogICAgbCA9IHUsciA9IHY7CiAgICBhbnMgPSAtMTsKICAgIHdoaWxlKGw8PXIpewogICAgICAgIGludCBtID0gKGwrcik+PjE7CiAgICAgICAgaWYoY2hlY2sobSkpewogICAgICAgICAgICBhbnMgPSBtOwogICAgICAgICAgICByID0gbS0xOwogICAgICAgIH1lbHNlIGwgPSBtKzE7CiAgICB9CiAgICBjb3V0IDw8IGFuczsKICAgIHJldHVybiAwOwp9Cg==