// Author: 4uckd3v - Nguyen Cao Duc
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> ii;
const int MAX_N = 1e5;
const int MOD = 1e9 + 7;
struct Line {
ll a, b;
Line() {};
Line(ll a, ll b) : a(a), b(b) {};
ll eval(int x) { return a * x + b; };
ll div(ll a, ll b) { return a / b - ((a ^ b) < 0 && a % b); };
ll intersect(const Line &other) {
return div(other.b - b, a - other.a);
};
};
struct State {
int pos, size;
Line overwrite;
State(int pos, int size, Line overwrite) : pos(pos), size(size), overwrite(overwrite) {};
};
struct ConvexHullTrick {
Line line[MAX_N + 5];
int size;
stack<State> st;
void rollback() {
assert(!st.empty());
line[st.top().pos] = st.top().overwrite;
size = st.top().size;
st.pop();
};
void addLine(Line newLine) {
if (size < 2) {
st.push(State(size, size, line[size]));
line[size++] = newLine;
return;
};
int l = 0, r = size - 2, pos = size;
while (l <= r) {
int mid = (l + r) >> 1;
if (line[mid].intersect(newLine) <= line[mid].intersect(line[mid + 1])) {
pos = mid + 1;
r = mid - 1;
} else
l = mid + 1;
};
st.push(State(pos, size, line[pos]));
line[pos] = newLine;
size = pos + 1;
};
ll query(int x) {
if (size < 2) return line[0].eval(x);
ll res = line[0].eval(x);
int l = 0, r = size - 2;
while (l <= r) {
int mid = (l + r) >> 1;
res = min(res, line[mid].eval(x));
res = min(res, line[mid + 1].eval(x));
if (line[mid].eval(x) >= line[mid + 1].eval(x))
l = mid + 1;
else
r = mid - 1;
};
return res;
};
};
int n;
int S[MAX_N + 5], V[MAX_N + 5];
ll dp[MAX_N + 5], f[MAX_N + 5];
ConvexHullTrick cht;
vector<ii> adj[MAX_N + 5];
vector<int> ancestor;
void dfs(int u, int par) {
if (u != 1) dp[u] = cht.query(V[u]) + f[u] * V[u] + S[u];
cht.addLine(Line(-f[u], dp[u]));
for (ii e : adj[u]) {
int v = e.first, w = e.second;
if (v == par) continue;
f[v] = f[u] + w;
dfs(v, u);
};
cht.rollback();
};
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
if (fopen("MAIN.INP", "r")) {
freopen("MAIN.INP", "r", stdin);
freopen("MAIN.OUT", "w", stdout);
};
cin >> n;
for (int i = 1; i < n; i++) {
int u, v, w;
cin >> u >> v >> w;
adj[u].push_back(ii(v, w));
adj[v].push_back(ii(u, w));
};
for (int i = 2; i <= n; i++) cin >> S[i] >> V[i];
dfs(1, 1);
for (int u = 2; u <= n; u++) cout << dp[u] << " ";
};
Ly8gQXV0aG9yOiA0dWNrZDN2IC0gTmd1eWVuIENhbyBEdWMKI2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp0eXBlZGVmIGxvbmcgbG9uZyBsbDsKdHlwZWRlZiBwYWlyPGludCwgaW50PiBpaTsKCmNvbnN0IGludCBNQVhfTiA9IDFlNTsKY29uc3QgaW50IE1PRCA9IDFlOSArIDc7CgpzdHJ1Y3QgTGluZSB7CiAgICBsbCBhLCBiOwogICAgTGluZSgpIHt9OwogICAgTGluZShsbCBhLCBsbCBiKSA6IGEoYSksIGIoYikge307CgogICAgbGwgZXZhbChpbnQgeCkgeyByZXR1cm4gYSAqIHggKyBiOyB9OwogICAgbGwgZGl2KGxsIGEsIGxsIGIpIHsgcmV0dXJuIGEgLyBiIC0gKChhIF4gYikgPCAwICYmIGEgJSBiKTsgfTsKICAgIGxsIGludGVyc2VjdChjb25zdCBMaW5lICZvdGhlcikgewogICAgICAgIHJldHVybiBkaXYob3RoZXIuYiAtIGIsIGEgLSBvdGhlci5hKTsKICAgIH07Cn07CgpzdHJ1Y3QgU3RhdGUgewogICAgaW50IHBvcywgc2l6ZTsKICAgIExpbmUgb3ZlcndyaXRlOwogICAgU3RhdGUoaW50IHBvcywgaW50IHNpemUsIExpbmUgb3ZlcndyaXRlKSA6IHBvcyhwb3MpLCBzaXplKHNpemUpLCBvdmVyd3JpdGUob3ZlcndyaXRlKSB7fTsKfTsKCnN0cnVjdCBDb252ZXhIdWxsVHJpY2sgewogICAgTGluZSBsaW5lW01BWF9OICsgNV07CiAgICBpbnQgc2l6ZTsKCiAgICBzdGFjazxTdGF0ZT4gc3Q7CgogICAgdm9pZCByb2xsYmFjaygpIHsKICAgICAgICBhc3NlcnQoIXN0LmVtcHR5KCkpOwogICAgICAgIGxpbmVbc3QudG9wKCkucG9zXSA9IHN0LnRvcCgpLm92ZXJ3cml0ZTsKICAgICAgICBzaXplID0gc3QudG9wKCkuc2l6ZTsKICAgICAgICBzdC5wb3AoKTsKICAgIH07CgogICAgdm9pZCBhZGRMaW5lKExpbmUgbmV3TGluZSkgewogICAgICAgIGlmIChzaXplIDwgMikgewogICAgICAgICAgICBzdC5wdXNoKFN0YXRlKHNpemUsIHNpemUsIGxpbmVbc2l6ZV0pKTsKICAgICAgICAgICAgbGluZVtzaXplKytdID0gbmV3TGluZTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH07CgogICAgICAgIGludCBsID0gMCwgciA9IHNpemUgLSAyLCBwb3MgPSBzaXplOwogICAgICAgIHdoaWxlIChsIDw9IHIpIHsKICAgICAgICAgICAgaW50IG1pZCA9IChsICsgcikgPj4gMTsKICAgICAgICAgICAgaWYgKGxpbmVbbWlkXS5pbnRlcnNlY3QobmV3TGluZSkgPD0gbGluZVttaWRdLmludGVyc2VjdChsaW5lW21pZCArIDFdKSkgewogICAgICAgICAgICAgICAgcG9zID0gbWlkICsgMTsKICAgICAgICAgICAgICAgIHIgPSBtaWQgLSAxOwogICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgIGwgPSBtaWQgKyAxOwogICAgICAgIH07CgogICAgICAgIHN0LnB1c2goU3RhdGUocG9zLCBzaXplLCBsaW5lW3Bvc10pKTsKICAgICAgICBsaW5lW3Bvc10gPSBuZXdMaW5lOwogICAgICAgIHNpemUgPSBwb3MgKyAxOwogICAgfTsKCiAgICBsbCBxdWVyeShpbnQgeCkgewogICAgICAgIGlmIChzaXplIDwgMikgcmV0dXJuIGxpbmVbMF0uZXZhbCh4KTsKCiAgICAgICAgbGwgcmVzID0gbGluZVswXS5ldmFsKHgpOwogICAgICAgIGludCBsID0gMCwgciA9IHNpemUgLSAyOwogICAgICAgIHdoaWxlIChsIDw9IHIpIHsKICAgICAgICAgICAgaW50IG1pZCA9IChsICsgcikgPj4gMTsKICAgICAgICAgICAgcmVzID0gbWluKHJlcywgbGluZVttaWRdLmV2YWwoeCkpOwogICAgICAgICAgICByZXMgPSBtaW4ocmVzLCBsaW5lW21pZCArIDFdLmV2YWwoeCkpOwogICAgICAgICAgICBpZiAobGluZVttaWRdLmV2YWwoeCkgPj0gbGluZVttaWQgKyAxXS5ldmFsKHgpKQogICAgICAgICAgICAgICAgbCA9IG1pZCArIDE7CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIHIgPSBtaWQgLSAxOwogICAgICAgIH07CgogICAgICAgIHJldHVybiByZXM7CiAgICB9Owp9OwoKaW50IG47CmludCBTW01BWF9OICsgNV0sIFZbTUFYX04gKyA1XTsKbGwgZHBbTUFYX04gKyA1XSwgZltNQVhfTiArIDVdOwpDb252ZXhIdWxsVHJpY2sgY2h0Owp2ZWN0b3I8aWk+IGFkaltNQVhfTiArIDVdOwp2ZWN0b3I8aW50PiBhbmNlc3RvcjsKCnZvaWQgZGZzKGludCB1LCBpbnQgcGFyKSB7CiAgICBpZiAodSAhPSAxKSBkcFt1XSA9IGNodC5xdWVyeShWW3VdKSArIGZbdV0gKiBWW3VdICsgU1t1XTsKICAgIGNodC5hZGRMaW5lKExpbmUoLWZbdV0sIGRwW3VdKSk7CgogICAgZm9yIChpaSBlIDogYWRqW3VdKSB7CiAgICAgICAgaW50IHYgPSBlLmZpcnN0LCB3ID0gZS5zZWNvbmQ7CiAgICAgICAgaWYgKHYgPT0gcGFyKSBjb250aW51ZTsKICAgICAgICBmW3ZdID0gZlt1XSArIHc7CiAgICAgICAgZGZzKHYsIHUpOwogICAgfTsKCiAgICBjaHQucm9sbGJhY2soKTsKfTsKCmludCBtYWluKCkgewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTsKICAgIGNpbi50aWUoMCk7CiAgICBpZiAoZm9wZW4oIk1BSU4uSU5QIiwgInIiKSkgewogICAgICAgIGZyZW9wZW4oIk1BSU4uSU5QIiwgInIiLCBzdGRpbik7CiAgICAgICAgZnJlb3BlbigiTUFJTi5PVVQiLCAidyIsIHN0ZG91dCk7CiAgICB9OwoKICAgIGNpbiA+PiBuOwogICAgZm9yIChpbnQgaSA9IDE7IGkgPCBuOyBpKyspIHsKICAgICAgICBpbnQgdSwgdiwgdzsKICAgICAgICBjaW4gPj4gdSA+PiB2ID4+IHc7CiAgICAgICAgYWRqW3VdLnB1c2hfYmFjayhpaSh2LCB3KSk7CiAgICAgICAgYWRqW3ZdLnB1c2hfYmFjayhpaSh1LCB3KSk7CiAgICB9OwoKICAgIGZvciAoaW50IGkgPSAyOyBpIDw9IG47IGkrKykgY2luID4+IFNbaV0gPj4gVltpXTsKCiAgICBkZnMoMSwgMSk7CgogICAgZm9yIChpbnQgdSA9IDI7IHUgPD0gbjsgdSsrKSBjb3V0IDw8IGRwW3VdIDw8ICIgIjsKfTs=