/*If we keep holding onto yesterday, what are we going to be tomorrow?*/
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
const int N = 200005;
vector<array<int, 2>>g[N];
long long d[N], w[N];
long long ans = LLONG_MIN;
long long dfs(int u, int p) {
    
    long long mx = d[u];
    for(auto [v, wt] : g[u]) {
        if(v == p) continue;
        d[v] = d[u] - 2ll * wt + w[v];
        long long yo = dfs(v, u);
        long long ret = yo + mx - 2ll * d[u] + w[u];
        ans = max(ans, ret);
        mx = max(mx, yo);
    }
    return mx;
}
void solve() {
    int n;
    cin >> n;
    for(int i = 1; i <= n; i++) g[i].clear();
    for(int i = 1; i <= n; i++) {
        cin >> w[i];
    }
    d[1] = w[1];
    for(int i = 0; i < n - 1; i++) {
        int u, v, wt;
        cin >> u >> v >> wt;
        g[u].push_back({v, wt});
        g[v].push_back({u, wt});
    }
    ans = LLONG_MIN;
    dfs(1, 0);
    cout << ans << '\n';
}
int32_t main() {
    ios::sync_with_stdio(0);
    cin.tie(0);
        
    int t = 1;
    cin >> t;
    
    while(t--){
        solve();
    }
    return 0;
}