#include using namespace std; using ll = long long; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int N; cin >> N; vector A(N); for (auto &x : A) cin >> x; vector> G(N); for (int i = 0; i < N - 1; ++i) { int u, v; cin >> u >> v; --u, --v; G[u].push_back(v); G[v].push_back(u); } ll ans = -(1LL << 60); for (int s = 0; s < N; ++s) { vector> st = { {s, -1, 0, A[s]} }; while (!st.empty()) { auto [v, p, d, sum] = st.back(); st.pop_back(); ans = max(ans, sum - 1LL * d * (d + 1) / 2); for (int u : G[v]) { if (u == p) continue; st.push_back({u, v, d + 1, sum + A[u]}); } } } cout << ans << '\n'; }