(n,),*e=[[*map(int,s.split())]for s in open(0)] uv=e[:n-1] xy=e[n-1:] M=1<<64 def f(edges): ret=[[-1]*n for _ in range(n)] g=[[]for _ in range(n)] for u,v in edges: g[u-1]+=v-1, g[v-1]+=u-1, for i in range(n): q=[i] ret[i][i]=0 while q: p=q.pop() for v in g[p]: if ret[i][v]<0: q+=v, ret[i][v]=ret[i][p]+1 return ret da=f(uv) db=f(xy) ans=0 for p in range(n): for q in range(n): ans+=da[p][q]*db[p][q] ans%=M print(ans)