#pragma GCC optimize("Ofast") #pragma GCC target("avx2") #define rd_init() char*rp=({char*mmap();mmap(0l,1l<<25,1,2,0,0ll);}) #define rd() ({int _v=0,_c;while(_c=*rp++-48,_c>=0)_v=_v*10+_c;_v;}) #define rd_signed() ({long _s=*rp=='-'&&++rp,_v=rd();_s?-_v:_v;}) #define wt(v) ({ulong _z=v;do*--wp=_z%10+48;while(_z/=10);}) #define wt1(v) ({char wbuf[64],*wp=wbuf+sizeof wbuf;wt(v);write(1,wp,wbuf+sizeof wbuf-wp);}) #define rep(v,e) for(typeof(e)v=0;v=a?v:a) typedef unsigned long ulong; #define MAXN 200000 int en[MAXN+2]; int eb[MAXN<<1]; int ew[MAXN<<1]; int uv[MAXN<<1]; int uw[MAXN]; int n; void f0(){ rd_init(); n=rd(); rep(j,n-1){ { int t=rd(); uv[j<<1|0]=t; ++en[t]; } { int t=rd(); uv[j<<1|1]=t; ++en[t]; } { int t=rd_signed(); uw[j]=t; } } { int s=0; rep(i,n+2){ en[i]=s+=en[i]; } } rrep(j,n-1<<1){ int k=--en[uv[j]]; eb[k]=uv[j^1]; ew[k]=uw[j>>1]; } } long z; long f(int i,int p){ long m=0; reps(k,en[i],en[i+1]){ int j=eb[k]; if(j!=p){ long r=f(j,i)+ew[k]; chmax(z,m+r); chmax(m,r); } } return m; } int main(){ f0(); f(1,1); wt1(z); _exit(0); }