#include using namespace std; long long MOD = 1000000007; int dfs(vector &sz, vector> &c, int v){ sz[v] = 1; for (int w : c[v]){ sz[v] += dfs(sz, c, w); } return sz[v]; } int main(){ ios::sync_with_stdio(false); cin.tie(nullptr); int N; cin >> N; vector p(N, -1); vector> c(N); for (int i = 0; i < N - 1; i++){ int A, B; cin >> A >> B; A--; B--; p[B] = A; c[A].push_back(B); } int r; for (int i = 0; i < N; i++){ if (p[i] == -1){ r = i; } } vector d(N); d[r] = 0; queue Q; Q.push(r); while (!Q.empty()){ int v = Q.front(); Q.pop(); for (int w : c[v]){ d[w] = d[v] + 1; Q.push(w); } } vector sz(N, 0); dfs(sz, c, r); long long ans = 0; for (int i = 0; i < N; i++){ ans += (long long) d[i] * sz[i]; ans %= MOD; } cout << ans << endl; }