#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; vector> vec(1000010); bool bo[1000010] = { false }; int main() { long long n; cin >> n; for (int i = 0; i < n - 1; i++) { int a, b; cin >> a >> b; vec[a].emplace_back(b); bo[b] = true; } queue> que; for (int i = 1; i <= n; i++) { if (!bo[i]) { que.push(make_pair(i, 0)); } } long long ans = 0; while (!que.empty()) { pair p; p = que.front(); ans += p.second * (p.second + 1) / 2; ans %= 1000000007; for (int i = 0; i < vec[p.first].size(); i++) { que.push(make_pair(vec[p.first][i], p.second + 1)); } que.pop(); } cout << ans << endl; }