#include<bits/stdc++.h>
#define int long long
#define all(x) (x).begin(),(x).end()
using namespace std;
const int N = 1e6 + 10;
vector<int> g[N];
vector<int> gr[N];
vector<int> color(N);
vector<int> dp(N);
vector<int> comp_id(N);
vector<int> fun(N);
vector<int> fun_sum(N); // gives funsum of comp_id = i
vector<int> order;
int comp_number,st,en,a,b,n,m;
void dfs1(int u){
color[u]=1;
for(auto v: g[u]){
if(color[v]==-1){
dfs1(v);
}
}
order.push_back(u);
color[u]=2;
}
void dfs2(int u){
color[u]=1;
comp_id[u]=comp_number;
fun_sum[comp_number] += fun[u];
for(auto v: gr[u]){
if(color[v]==-1){
dfs2(v);
}
}
color[u]=2;
}
void solve(){
fill(all(color),-1);
for(int i=1;i<=n;i++){
if(color[i]==-1){
dfs1(i);
}
}
reverse(all(order));
fill(all(color),-1);
comp_number=0;
for(int i=1;i<=n;i++){
if(color[i]==-1){
++comp_number;
dfs2(i);
}
}
// creating condensation graph
for(int i=1;i<=n;i++){
gr[i].clear();
}
for(int u=1;u<=n;u++){
for(auto v: g[u]){
if(comp_id[v]!=comp_id[u]){
gr[comp_id[u]].push_back(comp_id[v]);
}
}
}
//for(int i=1;i<=comp_number;i++){
// dp[i] = fun_sum[i];
//}
fill(all(color),-1);
queue<int> q;
q.push(comp_id[st]);
dp[comp_id[st]]=fun_sum[comp_id[st]];
while(!q.empty()){
int u = q.front();
q.pop();
color[u]=1;
for(auto v: gr[u]){
if(color[v]==1)continue;
if(dp[v] < (dp[u] + fun_sum[v])){
dp[v] = dp[u] + fun_sum[v];
q.push(v);
}
}
}
cout << dp[comp_id[en]] << endl;
}
signed main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
cin >> n >> m >> st >> en;
for(int i=1;i<=n;i++){
cin >> fun[i];
}
for(int i=1;i<=m;i++){
cin >> a >> b;
g[a].push_back(b);
gr[b].push_back(a);
}
solve();
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KI2RlZmluZSBpbnQgbG9uZyBsb25nCiNkZWZpbmUgYWxsKHgpICh4KS5iZWdpbigpLCh4KS5lbmQoKQp1c2luZyBuYW1lc3BhY2Ugc3RkOwpjb25zdCBpbnQgTiA9IDFlNiArIDEwOwp2ZWN0b3I8aW50PiBnW05dOwp2ZWN0b3I8aW50PiBncltOXTsKdmVjdG9yPGludD4gY29sb3IoTik7CnZlY3RvcjxpbnQ+IGRwKE4pOwp2ZWN0b3I8aW50PiBjb21wX2lkKE4pOwp2ZWN0b3I8aW50PiBmdW4oTik7CnZlY3RvcjxpbnQ+IGZ1bl9zdW0oTik7IC8vIGdpdmVzIGZ1bnN1bSBvZiBjb21wX2lkID0gaQp2ZWN0b3I8aW50PiBvcmRlcjsKaW50IGNvbXBfbnVtYmVyLHN0LGVuLGEsYixuLG07CnZvaWQgZGZzMShpbnQgdSl7Cgljb2xvclt1XT0xOwoJZm9yKGF1dG8gdjogZ1t1XSl7CgkJaWYoY29sb3Jbdl09PS0xKXsKCQkJZGZzMSh2KTsKCQl9Cgl9CglvcmRlci5wdXNoX2JhY2sodSk7Cgljb2xvclt1XT0yOwp9CnZvaWQgZGZzMihpbnQgdSl7Cgljb2xvclt1XT0xOwoJY29tcF9pZFt1XT1jb21wX251bWJlcjsKCWZ1bl9zdW1bY29tcF9udW1iZXJdICs9IGZ1blt1XTsKCWZvcihhdXRvIHY6IGdyW3VdKXsKCQlpZihjb2xvclt2XT09LTEpewoJCQlkZnMyKHYpOwoJCX0KCX0KCWNvbG9yW3VdPTI7Cn0Kdm9pZCBzb2x2ZSgpewoJZmlsbChhbGwoY29sb3IpLC0xKTsKCWZvcihpbnQgaT0xO2k8PW47aSsrKXsKCQlpZihjb2xvcltpXT09LTEpewoJCQlkZnMxKGkpOwoJCX0KCX0KCXJldmVyc2UoYWxsKG9yZGVyKSk7CglmaWxsKGFsbChjb2xvciksLTEpOwoJY29tcF9udW1iZXI9MDsKCWZvcihpbnQgaT0xO2k8PW47aSsrKXsKCQlpZihjb2xvcltpXT09LTEpewoJCQkrK2NvbXBfbnVtYmVyOwoJCQlkZnMyKGkpOwoJCX0KCX0KCS8vIGNyZWF0aW5nIGNvbmRlbnNhdGlvbiBncmFwaAoJZm9yKGludCBpPTE7aTw9bjtpKyspewoJCWdyW2ldLmNsZWFyKCk7Cgl9Cglmb3IoaW50IHU9MTt1PD1uO3UrKyl7CgkJZm9yKGF1dG8gdjogZ1t1XSl7CgkJCWlmKGNvbXBfaWRbdl0hPWNvbXBfaWRbdV0pewoJCQkJZ3JbY29tcF9pZFt1XV0ucHVzaF9iYWNrKGNvbXBfaWRbdl0pOwoJCQkKCQkJfQoJCX0KCX0KCS8vZm9yKGludCBpPTE7aTw9Y29tcF9udW1iZXI7aSsrKXsKCS8vCWRwW2ldID0gZnVuX3N1bVtpXTsKCS8vfQoJZmlsbChhbGwoY29sb3IpLC0xKTsKCXF1ZXVlPGludD4gcTsKCXEucHVzaChjb21wX2lkW3N0XSk7CglkcFtjb21wX2lkW3N0XV09ZnVuX3N1bVtjb21wX2lkW3N0XV07Cgl3aGlsZSghcS5lbXB0eSgpKXsKCQlpbnQgdSA9IHEuZnJvbnQoKTsKCQlxLnBvcCgpOwoJCWNvbG9yW3VdPTE7CgkJZm9yKGF1dG8gdjogZ3JbdV0pewoJCQlpZihjb2xvclt2XT09MSljb250aW51ZTsKCQkJaWYoZHBbdl0gPCAoZHBbdV0gKyBmdW5fc3VtW3ZdKSl7CgkJCQlkcFt2XSA9IGRwW3VdICsgZnVuX3N1bVt2XTsKCQkJCXEucHVzaCh2KTsKCQkJfQoJCX0KCX0KCWNvdXQgPDwgZHBbY29tcF9pZFtlbl1dIDw8IGVuZGw7Cn0Kc2lnbmVkIG1haW4oKXsKCWlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7IAoJY2luLnRpZSgwKTsKCWNpbiA+PiBuID4+IG0gPj4gc3QgPj4gZW47Cglmb3IoaW50IGk9MTtpPD1uO2krKyl7CgkJY2luID4+IGZ1bltpXTsKCX0KCWZvcihpbnQgaT0xO2k8PW07aSsrKXsKCQljaW4gPj4gYSA+PiBiOwoJCWdbYV0ucHVzaF9iYWNrKGIpOwoJCWdyW2JdLnB1c2hfYmFjayhhKTsKCX0KCXNvbHZlKCk7CglyZXR1cm4gMDsKfQ==