#include<bits/stdc++.h>
using namespace std;
int tail[100100],head[100100],nex[100100],tot;
int tim[100100],in[100100],q[100100],f=1,r,sum[100100],ans;
void add(int u,int v)
{
tail[++tot]=v;
nex[tot]=head[u];
head[u]=tot;
}
int main()
{
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++)
{
cin>>tim[i];
}
while(m--)
{
int u,v;
cin>>u>>v;
add(u,v);
in[v]++;
}
for(int i=1;i<=n;i++)
{
if(in[i]==0)
{
q[++r]=i;
}
}
while(f<=r)
{
int t=q[f];
for(int i=head[t];i;i=nex[i])
{
int ed=tail[i];
in[ed]--;
if(in[ed]==0) q[++r]=ed;
sum[ed]=max(sum[ed],sum[t]+tim[ed]);
}
f++;
}
for(int i=1;i<=n;i++)
{
ans=max(ans,sum[i]);
}
cout<<ans;
return 0;
}