#include using namespace std; using ll = long long; #define rep(i,n) for(int i=0;i<(n);i++) int main(){ int n; cin >> n; vector s(n); rep(i,n) cin >> s[i]; vector> e(n); rep(i,n-1){ int a, b; cin >> a >> b; a--; b--; if(s[a]s[b]) e[a].push_back(b); } vector> p(n); rep(i,n) p[i] = pair(s[i], i); sort(p.begin(), p.end()); // s[i] 昇順に決定 vector ans(n); for(auto [x, i] : p){ for(int j : e[i]) ans[i] = max(ans[i], ans[j]); ans[i] += s[i]; } cout << *max_element(ans.begin(), ans.end()) << endl; }