Problem:
Score : 600 points

Problem Statement

Given is a tree T with N vertices. The i-th edge connects Vertex A_i and B_i (1 \leq A_i,B_i \leq N).

Now, each vertex is painted black with probability 1/2 and white with probability 1/2, which is chosen independently from other vertices. Then, let S be the smallest subtree (connected subgraph) of T containing all the vertices painted black. (If no vertex is painted black, S is the empty graph.)

Let the holeyness of S be the number of white vertices contained in S. Find the expected holeyness of S.

Since the answer is a rational number, we ask you to print it \bmod 10^9+7, as described in Notes.

Notes

When you print a rational number, first write it as a fraction \frac{y}{x}, where x, y are integers, and x is not divisible by 10^9 + 7
(under the constraints of the problem, such representation is always possible).

Then, you need to print the only integer z between 0 and 10^9 + 6, inclusive, that satisfies xz \equiv y \pmod{10^9 + 7}.

Constraints

2 \leq N \leq 2 \times 10^5

1 \leq A_i,B_i \leq N

The given graph is a tree.

Input

Input is given from Standard Input in the following format:

N
A_1 B_1
:
A_{N-1} B_{N-1}

Output

Print the expected holeyness of S, \bmod 10^9+7.

Sample Input 1

3
1 2
2 3

Sample Output 1

125000001

If the vertices 1, 2, 3 are painted black, white, black, respectively, the holeyness of S is 1.

Otherwise, the holeyness is 0, so the expected holeyness is 1/8.

Since 8 \times 125000001 \equiv 1 \pmod{10^9+7}, we should print 125000001.

Sample Input 2

4
1 2
2 3
3 4

Sample Output 2

375000003

The expected holeyness is 3/8.

Since 8 \times 375000003 \equiv 3 \pmod{10^9+7}, we should print 375000003.

Sample Input 3

4
1 2
1 3
1 4

Sample Output 3

250000002

The expected holeyness is 1/4.

Sample Input 4

7
4 7
3 1
2 6
5 2
7 1
2 7

Sample Output 4

570312505

Solution in C++14 (GCC 5.4.1) (judge verdict: Wrong Answer)

#include<iostream>
#include<sstream>
#include<fstream>
#include<string>
#include<vector>
#include<deque>
#include<queue>
#include<stack>
#include<set>
#include<map>
#include<algorithm>
#include<functional>
#include<utility>
#include<bitset>
#include<cmath>
#include<cstdlib>
#include<ctime>
#include<cstdio>

using namespace std;

#define REP(i,n) for(int i=0;i<int(n);i++)
#define foreach(c,itr) for(__typeof((c).begin()) itr=(c).begin();itr!=(c).end();itr++)
typedef long long ll;
typedef pair<int,int> P;


vector<ll> g[200010];
ll tree[200010],c[200010],m[200010];
const ll MOD=1e9+7;

ll modpow(ll x,ll n){
    ll res=1;
    while(n!=0){
	if(n%2!=0) res=(res*x)%MOD;
	x=(x*x)%MOD;
	n/=2;
   }
    return res;
}

void dfs(ll v,ll p){
   tree[v]=1;
   for(ll i=0;i<(ll)g[v].size();i++){
     if(g[v][i]!=p) dfs(g[v][i],v);
   }
   tree[p]+=tree[v];
   c[p]+=(m[tree[v]]-1+MOD)%MOD;
}

ll extgcd(ll a,ll b,ll& x,ll& y){
	ll g;
	if(b!=0){
		g=extgcd(b,a%b,y,x);
		y-=(a/b)*x;
	}else{
                g=a;
		x=1; y=0;
	}
	  return g;
}

ll mod_inverse(ll a,ll M){
    ll x,y;
    extgcd(a,M,x,y);
    return (x%M+M)%M;
}

int main(void){
	          ll i;

	          cin.tie(0);  ios_base::sync_with_stdio(false);

	          ll N;
	          cin >> N;
	          for(i=0;i<N-1;i++){
	        	  ll a,b;
	        	  cin >> a >> b;
	        	  a--;
	        	  b--;
	        	  g[a].push_back(b);
	        	  g[b].push_back(a);
	          }

	          m[0]=1;
	          for(i=1;i<=N;i++) m[i]=(2*m[i-1])%MOD;

	          dfs(0,-1);

	          ll y=0;
	          for(i=0;i<N;i++){
	        	  ll d=(c[i]+m[N-tree[i]]-1+MOD)%MOD;
	        	  d++;
	        	  ll s=(m[N-1]-d)%MOD;
	        	  y=(y+s)%MOD;
	          }

	          ll xx=mod_inverse(m[N],1000000007);
	          ll z=(y*xx)%MOD;

	          cout << z << endl;

	          return 0;
}