#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace std;
using namespace __gnu_pbds;
#define fi first
#define se second
#define mp make_pair
#define pb push_back
#define fbo find_by_order
#define ook order_of_key
typedef long long ll;
typedef pair<int,ll> ii;
typedef vector<int> vi;
typedef long double ld;
typedef tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update> pbds;
typedef set<int>::iterator sit;
typedef map<int,int>::iterator mit;
typedef vector<int>::iterator vit;
ll ans[300001];
vector<ii> adj[300001];
ll h[300001];
ll sub[300001];
int n;
void dfs(int u, int p)
{
sub[u] = 1;
for(int i = 0; i < adj[u].size(); i++)
{
int v = adj[u][i].fi; ll w = adj[u][i].se;
if(v==p) continue;
h[v] = h[u] + w;
dfs(v, u);
sub[u] += sub[v];
}
}
void dfs2(int u, int p)
{
for(int i = 0; i < adj[u].size(); i++)
{
int v = adj[u][i].fi; ll w = adj[u][i].se;
if(v==p) continue;
ans[v] = ans[u] - w*sub[v] + w*ll(n - sub[v]);
dfs2(v, u);
}
}
int main()
{
ios_base::sync_with_stdio(0); cin.tie(0);
cin >> n;
for(int i = 0; i < n - 1; i++)
{
int u, v, w;
cin>>u>>v>>w;
u--; v--;
adj[u].pb(mp(v,w));
adj[v].pb(mp(u,w));
}
dfs(0, -1);
for(int i = 0; i < n; i++)
{
ans[0] += h[i];
}
dfs2(0, -1);
for(int i = 0; i < n; i++)
{
cout << ans[i] << ' ';
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNpbmNsdWRlIDxleHQvcGJfZHMvYXNzb2NfY29udGFpbmVyLmhwcD4KI2luY2x1ZGUgPGV4dC9wYl9kcy90cmVlX3BvbGljeS5ocHA+CiAKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKdXNpbmcgbmFtZXNwYWNlIF9fZ251X3BiZHM7CiAKI2RlZmluZSBmaSBmaXJzdAojZGVmaW5lIHNlIHNlY29uZAojZGVmaW5lIG1wIG1ha2VfcGFpcgojZGVmaW5lIHBiIHB1c2hfYmFjawojZGVmaW5lIGZibyBmaW5kX2J5X29yZGVyCiNkZWZpbmUgb29rIG9yZGVyX29mX2tleQogCnR5cGVkZWYgbG9uZyBsb25nIGxsOwp0eXBlZGVmIHBhaXI8aW50LGxsPiBpaTsKdHlwZWRlZiB2ZWN0b3I8aW50PiB2aTsKdHlwZWRlZiBsb25nIGRvdWJsZSBsZDsgCnR5cGVkZWYgdHJlZTxpbnQsIG51bGxfdHlwZSwgbGVzczxpbnQ+LCByYl90cmVlX3RhZywgdHJlZV9vcmRlcl9zdGF0aXN0aWNzX25vZGVfdXBkYXRlPiBwYmRzOwp0eXBlZGVmIHNldDxpbnQ+OjppdGVyYXRvciBzaXQ7CnR5cGVkZWYgbWFwPGludCxpbnQ+OjppdGVyYXRvciBtaXQ7CnR5cGVkZWYgdmVjdG9yPGludD46Oml0ZXJhdG9yIHZpdDsKIApsbCBhbnNbMzAwMDAxXTsKdmVjdG9yPGlpPiBhZGpbMzAwMDAxXTsKbGwgaFszMDAwMDFdOwpsbCBzdWJbMzAwMDAxXTsKaW50IG47IAogCnZvaWQgZGZzKGludCB1LCBpbnQgcCkKewoJc3ViW3VdID0gMTsKCWZvcihpbnQgaSA9IDA7IGkgPCBhZGpbdV0uc2l6ZSgpOyBpKyspCgl7CgkJaW50IHYgPSBhZGpbdV1baV0uZmk7IGxsIHcgPSBhZGpbdV1baV0uc2U7CgkJaWYodj09cCkgY29udGludWU7CgkJaFt2XSA9IGhbdV0gKyB3OwoJCWRmcyh2LCB1KTsKCQlzdWJbdV0gKz0gc3ViW3ZdOwoJfQp9CiAKdm9pZCBkZnMyKGludCB1LCBpbnQgcCkKewoJZm9yKGludCBpID0gMDsgaSA8IGFkalt1XS5zaXplKCk7IGkrKykKCXsKCQlpbnQgdiA9IGFkalt1XVtpXS5maTsgbGwgdyA9IGFkalt1XVtpXS5zZTsKCQlpZih2PT1wKSBjb250aW51ZTsKCQlhbnNbdl0gPSBhbnNbdV0gLSB3KnN1Ylt2XSArIHcqbGwobiAtIHN1Ylt2XSk7CgkJZGZzMih2LCB1KTsKCX0KfQogCmludCBtYWluKCkKewoJaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTsgY2luLnRpZSgwKTsKCWNpbiA+PiBuOwoJZm9yKGludCBpID0gMDsgaSA8IG4gLSAxOyBpKyspCgl7CgkJaW50IHUsIHYsIHc7CgkJY2luPj51Pj52Pj53OwoJCXUtLTsgdi0tOwoJCWFkalt1XS5wYihtcCh2LHcpKTsKCQlhZGpbdl0ucGIobXAodSx3KSk7Cgl9CglkZnMoMCwgLTEpOwoJZm9yKGludCBpID0gMDsgaSA8IG47IGkrKykKCXsKCQlhbnNbMF0gKz0gaFtpXTsKCX0KCWRmczIoMCwgLTEpOwoJZm9yKGludCBpID0gMDsgaSA8IG47IGkrKykKCXsKCQljb3V0IDw8IGFuc1tpXSA8PCAnICc7Cgl9Cn0KIA==