#include using namespace std; typedef long long int ll; typedef pair P; typedef vector VI; typedef vector VVI; const ll MOD = 1000000007; const ll INF = 1e18; #define REP(i, n) for (int i = 0; i < n; i++) #define ALL(v) v.begin(), v.end() VVI edge(1114514,VI(0)); ll ans=0; P dfs(int v){ ll sum=0, esum=0; for(auto to:edge[v]){ P x=dfs(to); esum=(esum+x.second)%MOD; sum=(sum+x.first+x.second)%MOD; } ans=(ans+sum)%MOD; return {sum,esum+1}; } int main(){ int n; cin >> n; int a, b; vector root(n,1); REP(i,n-1){ cin >> a >> b; a--; b--; root[b]=0; edge[a].push_back(b); } REP(i,n){ if(root[i]) dfs(i); } cout << ans << endl; return 0; }