#include int ri() { int n; scanf("%d", &n); return n; } std::vector > hen; int64_t res = 0; void dfs(int i, int depth) { res += (int64_t) depth * (depth + 1) / 2; for (auto j : hen[i]) dfs(j, depth + 1); } int main() { int n = ri(); hen.resize(n); std::vector used(n); for (int i = 1; i < n; i++) { int a = ri() - 1; int b = ri() - 1; hen[a].push_back(b); used[b] = true; } int root = std::find(used.begin(), used.end(), false) - used.begin(); dfs(root, 0); printf("%d\n", (int) (res % 1000000007)); return 0; }