#include #include #include #include #include #include #include #include #include #include #define mkp make_pair #define mkt make_tuple #define rep(i,n) for(int i = 0; i < (n); ++i) #define all(v) v.begin(),v.end() using namespace std; typedef long long ll; const ll MOD=1e9+7; template void chmin(T &a,const T &b){if(a>b) a=b;} template void chmax(T &a,const T &b){if(a>N; vector> g(N); rep(i,N-1){ int a,b; cin>>a>>b; a--;b--; g[a].push_back(b); g[b].push_back(a); } vector sz(N,0); auto szdfs = [&](auto &&szdfs,int now,int par)->void{ sz[now]=1; for(auto nex:g[now]){ if(nex==par) continue; szdfs(szdfs,nex,now); sz[now]+=sz[nex]; } }; szdfs(szdfs,0,-1); ll ans=0; auto dfs = [&](auto &&dfs,int now,int par)->void{ for(auto nex:g[now]){ if(nex==par) continue; dfs(dfs,nex,now); ll res=sz[nex]*(N-sz[nex]); ans+=res; } ans+=N; if(par!=-1){ ll res=(N-sz[now])*sz[now]; ans+=res; } }; dfs(dfs,0,-1); cout<