import sys input = sys.stdin.readline from collections import * N, M = map(int, input().split()) H = list(map(int, input().split())) G1 = [[] for _ in range(2*N)] G2 = [[] for _ in range(2*N)] for _ in range(M): u, v = map(int, input().split()) u -= 1 v -= 1 if H[u]>H[v]: G1[2*u].append(2*v+1) G1[2*u+1].append(2*v+1) else: G1[2*u+1].append(2*v) if H[u]>H[v]: G2[2*v+1].append(2*u) else: G2[2*v].append(2*u+1) G2[2*v+1].append(2*u+1) dp1 = [-10**18]*(2*N) dp1[0] = 0 dp1[1] = 0 for v in range(2*N): for nv in G1[v]: dp1[nv] = max(dp1[nv], dp1[v]+max(0, H[nv//2]-H[v//2])) dp2 = [-10**18]*(2*N) dp2[2*N-2] = 0 dp2[2*N-1] = 0 for v in range(2*N-1, -1, -1): for nv in G2[v]: dp2[nv] = max(dp2[nv], dp2[v]+max(0, H[nv//2]-H[v//2])) ans1 = max(dp1[-1], dp1[-2]) ans2 = max(dp2[0], dp2[1]) if ans1<0: print(-1) else: print(ans1) if ans2<0: print(-1) else: print(ans2)