#include<cstdio>
#include<cstring>
#include<algorithm>
#include<set>
#define int long long
using namespace std;
const int N=2e5+5;
inline int read()
{
int X=0; bool flag=1; char ch=getchar();
while(ch<'0'||ch>'9') {if(ch=='-') flag=0; ch=getchar();}
while(ch>='0'&&ch<='9') {X=(X<<1)+(X<<3)+ch-'0'; ch=getchar();}
if(flag) return X;
return ~(X-1);
}
int n,m,tot,ans;
int head[N*2],nxt[N*2],to[N*2],w[N*2],cnt;
int f[N][20],d[N],dis[N],dfn[N];
void add(int x,int y,int z) {
to[++cnt]=y,w[cnt]=z,nxt[cnt]=head[x],head[x]=cnt;
}
void dfs(int x,int fath) {
dfn[x]=++tot;
f[x][0]=fath;
for(int i=1;i<20;i++) {
f[x][i]=f[f[x][i-1]][i-1];
if(!f[x][i]) break;
}
for(int i=head[x];i;i=nxt[i]) {
int v=to[i];
if(v==fath) continue;
dis[v]=dis[x]+w[i];
d[v]=d[x]+1;
dfs(v,x);
}
}
int Lca(int x,int y) {
if(d[x]<d[y]) swap(x,y);
for(int i=19;i>=0;i--) {
if(f[x][i]&&d[f[x][i]]>=d[y]) x=f[x][i];
}
if(x==y) return x;
for(int i=19;i>=0;i--) {
if(f[x][i]!=f[y][i]) x=f[x][i],y=f[y][i];
}
return f[x][0];
}
int dist(int x,int y) {
int lc=Lca(x,y);
return dis[x]+dis[y]-2*dis[lc];
}
signed main() {
n=read();
for(int i=1;i<n;i++) {
int x=read(),y=read(),z=read();
add(x,y,z); add(y,x,z);
}
}