#include <bits/stdc++.h> using namespace std; typedef long long ll; const ll maxn = 1e5 + 5; ll n, dp[maxn], sz[maxn]; vector<pair<ll, ll> >edge[maxn]; inline ll read(){ ll s = 0, w = 1; char ch = getchar(); while(ch < '0' || ch > '9'){ if(ch == '-') w = -1; ch = getchar();} while(ch >= '0' && ch <= '9') s = s * 10 + ch - '0', ch = getchar(); return s * w; } inline void print(ll x){ if(x < 0) x = ~x + 1, putchar('-'); if(x > 9) print(x / 10); putchar(x % 10 + '0'); } void dfs(ll u, ll f){ sz[u] = 1; for(auto i : edge[u]){ ll v = i.first, w = i.second; if(v == f) continue; dfs(v, u); sz[u] += sz[v]; dp[u] += (dp[v] + sz[v] * (n - sz[v]) * w); } } int main(){ n = read(); for(int i = 1; i < n; i++){ ll u = read(), v = read(), w = read(); edge[u].push_back(make_pair(v, w)); edge[v].push_back(make_pair(u, w)); } dfs(1, 0); print(dp[1]); return 0; }