n = int(input()) a = list(map(int, input().split())) ans = [0] * n edge = [list(map(int, input().split()))for _ in range(n - 1)] edge.sort(key = lambda x: min(a[x[0] - 1], a[x[1] - 1])) for x, y in edge: if a[x - 1] == a[y - 1]: continue if a[x - 1] < a[y - 1]: x, y = y, x ans[x - 1] = max(ans[x - 1], a[y - 1] + ans[y - 1]) print(max(ans[i] + a[i] for i in range(n)))