#include <bits/stdc++.h>
using namespace std;
#define int long long
#define pb push_back
#define sz(x) ((int)x.size())
#define all(x) x.begin(), x.end()
#define F first
#define S second
#define ins insert
#define pii pair<int, int>
const int N = 1e5 + 100, K = 5, mod = 998244353, inf = 1e18;
vector<pii>g[N];
int dp[N], d[N], a[N], b[N];
void dfs(int v, int p, vector<int>V){
dp[v] = inf;
if(v == 1) dp[v] = 0;
for(auto u : V){
dp[v] = min(dp[v], dp[u] + (d[v] - d[u]) * b[v] + a[v]);
}
V.pb(v);
for(auto it : g[v]){
int to = it.F, w = it.S;
if(to == p) continue;
d[to] = d[v] + w;
dfs(to, v, V);
}
V.pop_back();
}
signed main(){
ios_base :: sync_with_stdio(false);
cin.tie(nullptr);
int n;
cin>>n;
for(int i = 1; i < n; i++){
int u, v, w;
cin>>u>>v>>w;
g[u].pb({v, w});
g[v].pb({u, w});
}
for(int i = 2; i <= n; i++){
cin>>a[i]>>b[i];
}
vector<int>V;
dfs(1, 1, V);
for(int i = 2; i <= n; i++){
cout<<dp[i]<<' ';
}
}