#include<bits/stdc++.h>
using namespace std;
const int N=1000005;
struct Edge
{
int st,to,nxt,w;
}edge[N << 1];
int head[N];
long long cnt,sum;
bool vis[N];
queue<int> q;
void add(int x,int y,int w)
{
edge[++cnt].to = y;
edge[cnt].st = x;
edge[cnt].w = w;
edge[cnt].nxt = head[x];
head[x]=cnt;
}
long long bfs(int u)
{
int st=edge[u].st;
int to=edge[u].to;
int w=edge[u].w;
vis[st]=vis[to]=1;
long long left=1,right=1;
q.push(st);
while(!q.empty())
{
int x=q.front();
vis[x]=1;
q.pop();
for(int i=head[x];i;i=edge[i].nxt)
{
if(edge[i].to == to) continue;
if(vis[edge[i].to]==0)
{
left+=1;
q.push(edge[i].to);
}
}
}
q.push(to);
while(!q.empty())
{
int x=q.front();
vis[x]=1;
q.pop();
for(int i=head[x];i;i=edge[i].nxt)
{
if(edge[i].to == st) continue;
if(vis[edge[i].to]==0)
{
right+=1;
q.push(edge[i].to);
}
}
}
return abs(right-left) * w;
}
int main()
{
int n;
scanf("%d",&n);
for(int i=1;i<n;i++)
{
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
add(a,b,c);
add(b,a,c);
}
for(int i=1;i<=2*(n-1);i+=2)
{
memset(vis,false,sizeof(vis));
sum+=bfs(i);
}
printf("%lld",sum);
return 0;
}