#include using namespace std; #define ll long long #define rep(i, n) for (int i = 0; i < (n); i++) #define P pair const int MOD = 1e9+7; vector G[1000005]; int sum[1000005]; vector dist; void dfs(int v, int d) { dist[v] = d; for (int nv : G[v]) { dfs(nv, d+1); } } void dfs_sum(int v, int d) { sum[v] = d + dist[v]; sum[v] %= MOD; for (int nv : G[v]) { dfs_sum(nv, sum[v]); } } int main() { int n; cin >> n; vector seen(n, true); rep(i,n-1) { int a, b; cin >> a >> b; a--, b--; G[a].push_back(b); seen[b] = false; } int r; // 根を決定 rep(i,n) { if (seen[i]) r = i; } const int INF = 1001001001; dist.resize(n, INF); dfs(r, 0); dfs_sum(r,0); int ans = 0; rep(i,n) { ans += sum[i]; ans %= MOD; } cout << ans << endl; }