//树形dfs题,每条边<a,b>的贡献:a走下去,b子树的大小为x的话,贡献为c[i]*abs(x-(n-x))
//要学会的思路:每条边两侧的两块连通块,一块是dfs的一棵子树,剩下的就是另一块连通块
#include <iostream>
#include <cmath>
#include <cstring>
using namespace std;
const int N = 1000005, M = 2000005;//双向边
int n;
int h[N],e[M],v[M],ne[M],idx;//v存边权
long long res;
void add(int a,int b,int c)
{
e[idx]=b;
ne[idx]=h[a];
v[idx]=c;
h[a]=idx++;
}
int dfs(int u,int parent,int val)//返回这棵子树大小,第二个元素树形dfs必备,第三个元素是u到parent的边权
{
int cnt=1;//这个结点本身是一个国家,1+Σ子子树大小=子树大小
for(int i=h[u];~i;i=ne[i])
{
int t=e[i];//不要忘记处理出当前结点编号!
if(t==parent)
continue;
cnt+=dfs(t,u,v[i]);
}//这棵子树大小处理完毕
//开始计算贡献,把parent到u的边的贡献加入答案
long long price=(long long)val*(abs(2*cnt-n));
res+=price;
return cnt;
}
int main()
{
cin>>n;
memset(h,-1,sizeof h);
for(int i=1;i<=n-1;i++)
{
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
add(a,b,c);//a指向b权值为c的边
add(b,a,c);
}
dfs(1,-1,0);
cout<<res<<endl;
return 0;
}