#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int N = 100005;
struct Edge {
int v;
ll w;
};
vector<Edge> adj[N];
ll down_dp[N];
ll up_dp[N];
ll ans[N];
void dfs1(int u, int p) {
down_dp[u] = 0;
for (auto e : adj[u]) {
int v = e.v;
ll w = e.w;
if (v == p) continue;
dfs1(v, u);
down_dp[u] = max(down_dp[u], down_dp[v] + w);
}
}
void dfs2(int u, int p) {
ll mx1 = -1, mx2 = -1;
for (auto e : adj[u]) {
int v = e.v;
ll w = e.w;
if (v == p) continue;
ll cur = down_dp[v] + w;
if (cur > mx1) {
mx2 = mx1;
mx1 = cur;
}
else if (cur > mx2) {
mx2 = cur;
}
}
for (auto e : adj[u]) {
int v = e.v;
ll w = e.w;
if (v == p) continue;
ll cur = down_dp[v] + w;
ll use = mx1;
if (cur == mx1) use = mx2;
up_dp[v] = w + max(up_dp[u], max(0LL, use));
dfs2(v, u);
}
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
freopen("DOG.INP", "r", stdin);
freopen("DOG.OUT", "w", stdout);
int n;
cin >> n;
for (int i = 1; i < n; i++) {
int u, v;
ll c;
cin >> u >> v >> c;
adj[u].push_back({v, c});
adj[v].push_back({u, c});
}
dfs1(1, 0);
up_dp[1] = 0;
dfs2(1, 0);
for (int i = 1; i <= n; i++) {
ans[i] = max(down_dp[i], up_dp[i]);
cout << ans[i] << '\n';
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgbGwgbG9uZyBsb25nCnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgpjb25zdCBpbnQgTiA9IDEwMDAwNTsKCnN0cnVjdCBFZGdlIHsKICAgIGludCB2OwogICAgbGwgdzsKfTsKCnZlY3RvcjxFZGdlPiBhZGpbTl07CgpsbCBkb3duX2RwW05dOwpsbCB1cF9kcFtOXTsKbGwgYW5zW05dOwoKdm9pZCBkZnMxKGludCB1LCBpbnQgcCkgewogICAgZG93bl9kcFt1XSA9IDA7CgogICAgZm9yIChhdXRvIGUgOiBhZGpbdV0pIHsKICAgICAgICBpbnQgdiA9IGUudjsKICAgICAgICBsbCB3ID0gZS53OwoKICAgICAgICBpZiAodiA9PSBwKSBjb250aW51ZTsKCiAgICAgICAgZGZzMSh2LCB1KTsKCiAgICAgICAgZG93bl9kcFt1XSA9IG1heChkb3duX2RwW3VdLCBkb3duX2RwW3ZdICsgdyk7CiAgICB9Cn0KCnZvaWQgZGZzMihpbnQgdSwgaW50IHApIHsKICAgIGxsIG14MSA9IC0xLCBteDIgPSAtMTsKCiAgICBmb3IgKGF1dG8gZSA6IGFkalt1XSkgewogICAgICAgIGludCB2ID0gZS52OwogICAgICAgIGxsIHcgPSBlLnc7CgogICAgICAgIGlmICh2ID09IHApIGNvbnRpbnVlOwoKICAgICAgICBsbCBjdXIgPSBkb3duX2RwW3ZdICsgdzsKCiAgICAgICAgaWYgKGN1ciA+IG14MSkgewogICAgICAgICAgICBteDIgPSBteDE7CiAgICAgICAgICAgIG14MSA9IGN1cjsKICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAoY3VyID4gbXgyKSB7CiAgICAgICAgICAgIG14MiA9IGN1cjsKICAgICAgICB9CiAgICB9CgogICAgZm9yIChhdXRvIGUgOiBhZGpbdV0pIHsKICAgICAgICBpbnQgdiA9IGUudjsKICAgICAgICBsbCB3ID0gZS53OwoKICAgICAgICBpZiAodiA9PSBwKSBjb250aW51ZTsKCiAgICAgICAgbGwgY3VyID0gZG93bl9kcFt2XSArIHc7CgogICAgICAgIGxsIHVzZSA9IG14MTsKCiAgICAgICAgaWYgKGN1ciA9PSBteDEpIHVzZSA9IG14MjsKCiAgICAgICAgdXBfZHBbdl0gPSB3ICsgbWF4KHVwX2RwW3VdLCBtYXgoMExMLCB1c2UpKTsKCiAgICAgICAgZGZzMih2LCB1KTsKICAgIH0KfQoKaW50IG1haW4oKSB7CiAgICBpb3M6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKG51bGxwdHIpOwoKICAgIGZyZW9wZW4oIkRPRy5JTlAiLCAiciIsIHN0ZGluKTsKICAgIGZyZW9wZW4oIkRPRy5PVVQiLCAidyIsIHN0ZG91dCk7CgogICAgaW50IG47CiAgICBjaW4gPj4gbjsKCiAgICBmb3IgKGludCBpID0gMTsgaSA8IG47IGkrKykgewogICAgICAgIGludCB1LCB2OwogICAgICAgIGxsIGM7CiAgICAgICAgY2luID4+IHUgPj4gdiA+PiBjOwoKICAgICAgICBhZGpbdV0ucHVzaF9iYWNrKHt2LCBjfSk7CiAgICAgICAgYWRqW3ZdLnB1c2hfYmFjayh7dSwgY30pOwogICAgfQoKICAgIGRmczEoMSwgMCk7CgogICAgdXBfZHBbMV0gPSAwOwogICAgZGZzMigxLCAwKTsKCiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspIHsKICAgICAgICBhbnNbaV0gPSBtYXgoZG93bl9kcFtpXSwgdXBfZHBbaV0pOwogICAgICAgIGNvdXQgPDwgYW5zW2ldIDw8ICdcbic7CiAgICB9CgogICAgcmV0dXJuIDA7Cn0=