N,M = map(int,input().split()) H = list(map(int,input().split())) G = [[] for _ in range(N)] for _ in range(M): x,y = map(int,input().split()) x -= 1 y -= 1 G[x].append(y) G[y].append(x) dp = [[-1] * 2 for _ in range(N)] dp[0][0] = 0 dp[0][1] = 0 for i in range(N): for x in G[i]: if x < i:continue if H[x] > H[i]: if dp[i][0] != -1: dp[x][1] = max(dp[x][1],dp[i][0] + H[x] - H[i]) else: dp[x][0] = max(dp[x][0],max(dp[i])) dp2 = [[-1] * 2 for _ in range(N)] dp2[-1][0] = 0 dp2[-1][1] = 0 for i in range(N - 1,-1,-1): for x in G[i]: if x > i:continue if H[x] > H[i]: if dp2[i][0] != -1: dp2[x][1] = max(dp2[x][1],dp2[i][0] + H[x] - H[i]) else: dp2[x][0] = max(dp2[x][0],max(dp2[i])) print(max(dp[-1])) print(max(dp2[0]))