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 Julia (0.5.0) (judge verdict: Wrong Answer)

parseInt(x) = parse(Int, x)
parseMap(x::Array{SubString{String},1}) = map(parseInt, x)

function abmp(a,b,p)
	if b == 0
		1
	elseif b%2 == 0
		k = abmp(a,div(b,2),p)
		(k*k)%p
	else
		(a*abmp(a,b-1,p))%p
	end
end
function binarr(n,p)
	z = 1
	for i in 1:n
		z = z*i%p
	end
	fac = Array{Int}(n+1)
	inv = Array{Int}(n+1)
	inv[n+1] = abmp(z,p-2,p)
	for i in 0:n-1
		inv[n-i] = (inv[n+1-i]*(n-i))%p
	end
	for i in 0:n
		fac[i+1] = (((z*inv[i+1])%p)*inv[n+1-i])%p
	end
	fac
end

function euc(a,m)
	b = m
	x = 1
	u = 0
	while b>0
		q = div(a,b)
		tmp = u
		u = x-q*u
		x = tmp
		tmp = b
		b = a-q*b
		a = tmp
	end
	x<0?x+abs(m):x
end

function main()
	mod = 10^9+7
	n = readline() |> parseInt
	e = [Int[] for i in 1:n]
	for i in 1:n-1
		a,b = readline() |> split |> parseMap
		push!(e[a],b)
		push!(e[b],a)
	end
	layer = -ones(Int,n)
	layer[1] = 0
	stack = Int[1]
	head = zeros(Int,n)
	while !isempty(stack)
		now = shift!(stack)
		for i in e[now]
			if layer[i]<0
				layer[i] = layer[now] + 1
				push!(stack,i)
			else
				head[now] = i
			end
		end
	end
	ls = Tuple{Int,Int}[(layer[i],i) for i in 1:n]
	ls = sort(ls,by=x->x[1],rev=true)
	d = zeros(Int,n)
	da = [Int[] for i in 1:n]
	for i in 1:n-1
		u = ls[i][2]
		push!(da[head[u]],d[u]+1)
		d[head[u]] += d[u]+1
	end
	ct = zeros(Int,n)
	bt = zeros(Int,n+1)
	bt[1] = 1
	for i in 1:n
		bt[i+1] = (bt[i]*2)%mod
	end
	z = 1
	if length(da[1])>1
		for j in da[1]
			z = (z+bt[j+1]-1)%mod
		end
		ct[1] = (bt[n]-z+mod)%mod
	end
	for i in 2:n
		if !isempty(da[i])
			s = 0
			z = 1
			for j in da[i]
				s += j
				z = (z+bt[j+1]-1)%mod
			end
			z = (z+bt[n-s]-1)%mod
			ct[i] = (bt[n]-z+mod)%mod
		end
	end
	x = euc(bt[n+1],mod)
	println((sum(ct)*x)%mod)
end

main()