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.

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.

Examples

Input

3
1 2
2 3


Output

125000001


Input

4
1 2
2 3
3 4


Output

375000003


Input

4
1 2
1 3
1 4


Output

250000002


Input

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


Output

570312505
/* cerberus97 - Hanit Banga */

#include <iostream>
#include <iomanip>
#include <cassert>
#include <cmath>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <map>
#include <set>
#include <queue>
#include <stack>
#include <vector>
#include <algorithm>

using namespace std;

#define pb push_back
#define fast_cin() ios_base::sync_with_stdio(false); cin.tie(NULL)

typedef long long ll;
typedef long double ld;
typedef pair <int, int> pii;
typedef pair <ll, ll> pll;

const int N = 2e5 + 10, mod = 1e9 + 7;

vector<int> g[N];
int sz[N];
ll p2[N], p2_inv[N];

ll dfs(int u, int p, int n);
ll pwr(ll x, ll e);

int main() {
	fast_cin();
	int n; cin >> n;
	p2[0] = p2_inv[0] = 1;
	for (int i = 1; i <= n; ++i) {
		p2[i] = (2 * p2[i - 1]) % mod;
		p2_inv[i] = pwr(p2[i], mod - 2);
	}
	for (int i = 2; i <= n; ++i) {
		int u, v;
		cin >> u >> v;
		g[u].pb(v);
		g[v].pb(u);
	}
	cout << dfs(1, 0, n) << '\n';
}

ll dfs(int u, int p, int n) {
	sz[u] = 1;
	vector<int> sizes;
	ll ans = 0, prob = 0;
	for (auto& v : g[u]) {
		if (v != p) {
			ans += dfs(v, u, n);
			sz[u] += sz[v];
			prob += p2_inv[n - sz[v]] * (mod + 1 - p2_inv[sz[v]]);
			prob %= mod;
		}
	}
	if (sz[u] < n) {
		prob += p2_inv[sz[u]] * (mod + 1 - p2_inv[n - sz[u]]);
		prob %= mod;
	}
	prob += p2_inv[n] + p2_inv[1];
	prob %= mod;
	ans %= mod;
	ans += (mod + 1 - prob);
	return ans % mod;
}

ll pwr(ll x, ll e) {
	ll res = 1;
	while (e) {
		if (e & 1) {
			res = (res * x) % mod;
		}
		x = (x * x) % mod;
		e /= 2;
	}
	return res;
}