#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;
}