/*
⢸⠇⠀⡠⠴⠆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠀⣙⣛⡋⡋⠑⠀⠀⠀⠀⠀⠀⣠⣤⡶⢛⣩⣽⠛⠛⠛⠓⢦⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⣤⣶⣶⣞⠇⠳⡄⠀⠀⡾⠀⠀⠀⠀⠀⠀
⢸⠀⠀⠀⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠂⠀⠻⠻⠋⠟⢦⠀⠄⠀⠀⣴⣞⣵⡟⣴⣿⠟⢠⡶⠋⠉⠀⠀⠉⠳⣦⡀⠀⠀⠀⠀⠀⠀⢹⣿⣿⣿⠁⠀⢱⣄⠀⠁⠀⠀⠀⠀⠀⠀
⢸⠀⠀⡀⠀⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣶⣤⠀⡆⣰⢀⣀⢠⣶⣿⣿⣿⣼⣿⡏⣰⣿⣾⣶⣄⠀⢠⠀⠀⠀⠻⣆⠀⠀⠀⠀⠀⣼⠿⢛⠋⣤⣀⣾⣽⡆⠀⠀⠀⠀⠀⠀⠀
⢸⠀⠀⠀⡴⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣶⢠⠀⡀⠤⠀⠀⢰⣿⣿⡏⣿⣿⣿⣷⣿⣿⣿⣿⣷⣄⣘⣇⠀⠀⠀⠘⣦⠀⠀⠀⠀⠈⠛⠛⠿⣿⣿⣿⠿⢷⣄⣶⣄⠀⠀⠀⠀
⣼⠀⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣉⠉⠀⡁⠀⢀⡁⣀⣿⠟⢰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣄⠀⠀⠀⠘⣧⡀⠀⠀⠀⠀⠀⠀⣼⠷⠶⣶⠲⠼⣿⣿⡳⡀⠀⠀
⡏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠛⠚⠘⠃⠀⢻⡼⠏⢀⢀⣸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⡀⠀⠀⢻⠛⠲⠦⣄⡀⠀⢿⣷⣶⣭⠉⢻⡒⠀⠀⠙⠃⠀⠀
⡇⠀⠀⠀⠙⠀⠀⠀⠀⠀⠀⡄⠀⠀⠀⠀⠀⡝⢶⠀⠂⠀⣿⠀⠀⢸⡏⣑⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⢛⣻⣿⣿⣿⡿⠛⠀⠀⠶⣺⠇⠀⠈⠁⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⡇⠀⠠⠀⢠⠀⠀⠀⠀⠀⠀⡇⠀⠀⠀⠀⠀⢖⠠⠀⠀⠀⢼⣄⠀⠈⠇⠉⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠛⠩⠒⠀⣀⣴⠊⢙⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⡇⠂⢸⠀⠸⠀⠀⠀⠀⠀⠀⡇⠀⠀⠀⠀⠀⣈⠀⠀⠀⣀⡀⢹⡀⠀⠀⠀⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⠋⠁⠀⢀⣠⣴⣾⣿⣿⣿⡟⡏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⡇⠀⢨⠀⠚⠀⠀⠀⠀⠀⠀⡇⠀⠀⠀⠀⠀⠀⠀⢠⣶⡟⢛⣾⣷⣶⢺⣶⣿⣿⣿⣿⣿⣿⠿⠛⠉⠀⢀⣤⣴⣾⣿⣿⣿⢿⣿⣿⣿⢠⣧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⡇⠀⠈⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀⠀⠀⠀⠀⠀⠰⣿⣿⣴⣿⣿⣿⣥⣾⣿⣿⣿⣿⠟⣋⣥⣤⣶⣶⣿⣿⣿⣿⣿⣿⣿⠁⠘⠿⣿⣏⠟⡞⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣤
⡇⠀⠐⠀⠸⠀⠀⠀⠀⠀⠀⡇⠀⠀⠀⠀⠀⠀⠀⠀⠉⡏⢹⢋⠛⠛⠛⠛⠙⣿⠛⡿⣿⠿⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⠀⠲⠚⠉⢀⢻⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⠀
⡇⠀⠀⠀⠀⠀⠀⡄⠀⠀⠀⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⡦⢼⣿⠿⢶⣦⣀⣿⣦⣀⣴⣾⣿⣿⣿⣿⣿⣿⣿⡿⣿⣿⠂⠀⢀⣀⡀⣸⣼⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⠀
⡇⠁⠀⠀⠈⠀⠀⡷⠿⠿⠾⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⡄⠀⢻⡀⠈⠻⣿⣿⠋⣿⣅⠈⠻⠿⠋⣸⣿⡿⠉⠀⣿⣿⠀⠀⣿⣿⣿⣽⢿⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⠀
⡇⠀⠀⠀⢰⠠⠀⣇⠀⣳⣔⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⣄⣀⠙⢶⢴⣿⣟⣀⣸⣿⣷⣦⣶⣛⣿⡿⠁⠀⠀⣿⣿⠀⠀⣿⣿⣿⣿⡿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⠀
⡇⠀⠀⠀⢸⣿⢀⣿⣷⣿⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⡼⣿⡇⠀⠸⣿⣿⣿⣿⣿⣿⣿⡟⠋⠉⣾⣿⣷⢀⣿⣿⣷⠆⠻⢿⣿⢟⡅⢱⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⡇⠀⠀⠀⢸⢸⣷⣝⠻⣿⣿⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣷⡀⠀⣠⡶⢿⣿⡟⢿⣿⣿⣿⣿⣷⣦⣙⠛⠋⣼⣿⣿⣷⡄⣰⣾⣿⡿⠋⣉⣙⢲⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈
⡇⠀⠀⠀⠈⠈⢻⣿⣷⣜⢯⣓⢶⣤⡀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⠟⣹⣶⣾⣿⣿⣾⣿⣿⣿⣿⣿⣿⣿⣿⣾⣿⣿⣟⠿⣳⣿⣿⣿⣿⣯⠍⠉⠑⢿⣿⣧⣀⣀⡒⠂⠈⠲⠤⠗
⡇⠀⠀⠀⣰⠀⠈⢿⣿⡝⢷⣍⠳⣬⡙⠳⢯⣤⣤⣤⣤⡤⠄⠹⣃⣾⣿⣿⣿⣷⣶⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣟⠿⣽⣿⣿⣻⣭⠖⠚⠀⠀⠀⠘⣿⣿⣿⣿⣿⣽⣿⣿⣿
⡇⠀⠀⠀⢸⡇⠀⡞⢿⣷⣄⠙⠳⣄⠉⠷⣄⣈⠛⢧⣤⣴⣽⣷⡝⢻⣿⣕⣽⣟⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢟⣋⣭⠶⠖⠂⠀⠀⠀⠀⣻⡇⠉⠩⠿⠿⠿⠿⠿
⡇⠀⠀⠀⠸⠀⠀⡇⠈⣿⣿⡀⠀⠈⠻⣦⡈⣹⣿⠿⢿⣿⣿⣿⣿⣉⣝⣾⠓⣲⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣟⣋⣁⠀⠶⠶⠶⠚⠙⡇⢠⣿⣥⠭⠿⠶⠶⠶⠶⠖
⡧⠶⢶⠒⢾⡇⠀⡇⠀⠘⣿⣿⣤⠀⠀⠈⠻⡟⠁⠀⢸⣿⣿⣿⣿⣿⣿⣿⣾⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣅⣀⡀⠙⢿⣿⣯⣄⠀⠀⠀⠀⢀⣡⣾⣿⣶⣶⣿⣿⣿⣿⣿⣿
⣧⠀⢸⣀⣸⡇⠀⠃⠀⠀⠘⣿⣿⣇⠀⠀⠀⣿⠀⣠⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠟⠛⠉⠉⠛⣿⣿⣻⣦⡈⢿⡽⣿⣧⠀⠀⢠⣬⣿⣿⣛⣉⣉⣉⣀⣠⣤⣤⣤
⣿⠀⢈⠈⢸⡇⠀⠀⠀⠀⠀⡘⢿⣿⣧⡀⢠⡏⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠿⠛⠛⠉⠉⠀⢀⣀⠀⠀⣀⣠⣿⣿⣿⣿⣷⣌⣿⢘⣿⣾⣦⣿⣿⣿⣤⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⠛⠠⢀⣰⡇⠀⠀⠀⠀⠀⠃⠈⢿⣿⣿⣿⠀⢻⣿⣿⣿⣿⣿⠻⣿⠟⢭⣀⣀⣀⣀⣤⣤⣶⣾⣿⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣾⣿⣿⣿⣿⣿⣿⣿⣿⠟⠛⠉⠉⠉⢀⣀⣀
⣿⣠⠼⠛⠙⡇⠀⠀⠀⠀⠀⠀⠀⠘⢿⣿⣯⣤⣾⣿⣿⣿⣿⣿⡾⠋⢀⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣶⣶⣶⣾⣿⣿⣿⣿
⣿⠉⠀⢀⡀⡇⠀⠀⠀⠀⠀⠄⠀⠀⠈⢿⣿⣿⣏⣿⣿⣿⣿⡿⠀⢀⣸⢻⣿⣿⣿⣿⣿⣿⠿⠿⢿⣿⣶⣶⣶⣾⣿⣿⠿⠿⣿⣭⣭⣹⠿⣿⣿⣽⣿⣿⢻⣿⣿⣿⣿⣿⣿⣿⣿
⣿⠀⠈⠷⠁⡂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢿⣿⣿⣿⣿⣿⡿⠀⠀⣿⣿⣿⣿⣿⢟⠀⣻⣿⣿⣦⣄⠀⠀⠉⠉⠁⢀⣀⣀⡈⡻⠿⠟⠛⠀⠀⠉⠙⠿⣿⣿⣿⠿⠿⠿⠟⠛⠋⠉
⣿⡃⠀⣀⠘⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣿⣿⣿⣿⣿⢃⢀⢰⣿⣿⣿⣿⠏⠀⠀⢸⣿⣿⣿⣿⣿⣦⣄⠀⠴⢿⣿⣿⠿⠟⠀⠀⠀⠀⢀⡀⠀⠀⠀⠀⠉⠲⢤⣠⣤⣶⣶⣶
⣿⡟⠐⡦⢀⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⣿⣿⣿⣿⣿⢸⢸⣿⣿⣿⣳⡀⠀⠀⢨⣿⣿⣿⣿⣿⣿⣿⣿⣦⣄⠀⠀⠀⠀⠀⠀⢀⣠⣾⣿⣿⣿⣿⡆⠀⠀⠀⠈⠙⠻⠿⣿
⣿⡇⠁⣦⣶⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⠀⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⣄⠀⢀⠈⠉⠉⠛⠛⠛⠛⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀
⣿⣿⣶⡾⠿⠟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣶⣀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣯⣄⣀⡀⠀⠀⠀⠀⠀⠀⢀⣤⣤⣤⣤⡀⡀⠀
*/
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
// ifstream fin("harbingers.in");
// ofstream fout("harbingers.out");
#define fin cin
#define fout cout
const int MAXN = 100000;
struct Line {
int a;
long long b;
} stiva[MAXN];
int start[MAXN + 1], speed[MAXN + 1], depth[MAXN + 1], sp;
vector<pair<int, int>> g[MAXN + 1];
vector<pair<Line, int>> undo;
long long dp[MAXN + 1];
double intersect(Line l1, Line l2) {
return (double)(l2.b - l1.b) / (l1.a - l2.a);
}
long long query(int poz) {
int st = 1, dr = sp - 1, answer = 0;
while(st <= dr) {
int mij = (st + dr) / 2;
if(intersect(stiva[mij], stiva[mij - 1]) < poz) {
answer = mij;
st = mij + 1;
} else {
dr = mij - 1;
}
}
return 1LL * stiva[answer].a * poz + stiva[answer].b;
}
void update(Line l) {
int answer = sp;
if(sp >= 2) {
int st = 1, dr = sp - 1;
while(st <= dr) {
int mij = (st + dr) / 2;
if(intersect(l, stiva[mij - 1]) < intersect(stiva[mij], stiva[mij - 1])) {
answer = mij;
dr = mij - 1;
} else {
st = mij + 1;
}
}
}
undo.push_back({stiva[answer], sp});
stiva[answer] = l;
sp = answer + 1;
}
void dfs(int node, int parent) {
if(node == 1) {
stiva[sp++] = {0, 0};
} else {
dp[node] = start[node] + 1LL * speed[node] * depth[node] + query(speed[node]);
update({-depth[node], dp[node]});
}
for(auto edge : g[node]) {
if(edge.first != parent) {
depth[edge.first] = edge.second + depth[node];
dfs(edge.first, node);
}
}
if(node > 1) {
stiva[sp - 1] = undo.back().first;
sp = undo.back().second;
undo.pop_back();
}
}
int main() {
int n;
fin >> n;
for(int i = 1; i < n; i++) {
int u, v, w;
fin >> u >> v >> w;
g[u].push_back({v, w});
g[v].push_back({u, w});
}
for(int i = 2; i <= n; i++) {
fin >> start[i] >> speed[i];
}
undo.reserve(n);
dfs(1, 0);
for(int i = 2; i <= n; i++) {
fout << dp[i] << " ";
}
fout << "\n";
return 0;
}