#include<bits/stdc++.h>
using namespace std;
#define int long long
int n;
struct node {
vector<node*>son;
vector<int>son_wide;
node* fat;
int val;
};
node tree[1000010];
long sizE[1000010];
long long ans = 0;
inline void dfs(node* root) {
sizE[root->val] = 1;
for (int i = 0; i < root->son.size(); ++i) {
dfs(root->son[i]);
sizE[root->val] += sizE[root->son[i]->val];
}
}
inline void dfs2(node* root) {
for (int i = 0; i < root->son.size(); ++i) {
ans += root->son_wide[i] * abs((n - sizE[root->son[i]->val]) - sizE[root->son[i]->val]);
dfs2(root->son[i]);
}
}
signed main() {
cin >> n;
for (int i = 1; i <= n; ++i)tree[i].val = i;
for (int i = 1; i < n; ++i) {
int u, v, w;
cin >> u >> v >> w;
if (tree[v].fat != nullptr) [[likely]]{
swap(u, v);
}
tree[u].son.push_back(tree + v);
tree[v].fat = tree + u;
tree[u].son_wide.push_back(w);
}
node* root = tree+1;
while (root->fat != nullptr) {
root = root->fat;
}
dfs(root);
dfs2(root);
cout << ans;
return 0;
}