#include<bits/stdc++.h> #define ll long long #define rep(i,a,b) for(int i=a;i<=b;i++) using namespace std; const int maxn=600010; const int Mod=1e9+7; int c[maxn],fa[maxn]; int Laxt[maxn],Next[maxn],To[maxn],len[maxn],cnt; ll dp1[maxn],dp2[maxn],ans=0; ll Pow(int x){ return 1LL*x*x;} void add(int u,int v,int w) { Next[++cnt]=Laxt[u]; Laxt[u]=cnt; To[cnt]=v; len[cnt]=w; } void dfs1(int u,int f) //dp1[u]是fa[u]到子树的最大值 { for(int i=Laxt[u];i;i=Next[i]){ int v=To[i]; if(v==f) continue; c[v]=len[i]; dfs1(v,u); dp1[u]=max(dp1[u],dp1[v]+Pow(c[u]-c[v])); } if(f) ans=max(ans,dp1[u]); } int main() { int N,u,v,w; while(~scanf("%d",&N)){ rep(i,1,N) Laxt[i]=0; cnt=0; rep(i,1,N-1){ scanf("%d%d%d",&u,&v,&w); add(u,v,w); add(v,u,w); } rep(i,1,N) dp1[i]=dp1[i]=0; ans=0; dfs1(1,0); dfs2(1,0); printf("%lld ",ans); } return 0; }