#include #include #include #define ll long long #define rep(i,n) for(ll i=0;i edge[100100],v[100100]; void dfs(ll r,ll p,ll d){ depth[r]=d; rep(i,edge[r].size())if(edge[r][i]!=p)dfs(edge[r][i],r,d+1); rep(i,edge[r].size())if(edge[r][i]!=p)subtreesize[r]+=subtreesize[edge[r][i]]; subtreesize[r]++; } int main(){ ll n; cin>>n; rep(i,n-1){ cin>>a[i]>>b[i]; a[i]--,b[i]--; edge[a[i]].push_back(b[i]); edge[b[i]].push_back(a[i]); } rep(i,n){ if(edge[i].size()==1){ dfs(i,-1,0); break; } } rep(i,n-1){ if(depth[a[i]]>depth[b[i]]){ v[a[i]].push_back(n-subtreesize[a[i]]); v[b[i]].push_back(subtreesize[a[i]]); } else{ v[b[i]].push_back(n-subtreesize[b[i]]); v[a[i]].push_back(subtreesize[b[i]]); } } ll ans=0; rep(i,n){ ans+=2*n-1; rep(j,v[i].size()){ ans+=v[i][j]*(n-1-v[i][j]); } } cout<