#include <algorithm>
#include <iostream>
#include <cstring>
#include <vector>
#include <set>
using namespace std;

typedef long long ll;
typedef pair <ll, ll> pii;

const ll MAX_N = 2e5 + 10, MOD = 1e9 + 7;
ll n, ans, TWO;
ll sz[MAX_N];
vector <int> adj[MAX_N];

int _sum(int a, int b) {
    int c = a + b;
    if (MOD <= c)
        c -= MOD;

    return c;
}

int _sub(int a, int b) {
    int c = a - b;
    if (c < 0)
        c += MOD;

    return c;
}

int _mul(int a, int b) {
    int c = 1LL * a * b % MOD;
    return c;
}

int _pow(int a, int b) {
    if (!b)
        return 1;

    int res = _pow(a, b >> 1);
    res = _mul(res, res);

    if (b & 1)
        res = _mul(res, a);

    return res;
}

int dfs(int v, int p = 0) {
    sz[v] = 1;
    for (int u: adj[v])
        if (u != p)
            sz[v] += dfs(u, v);

    return sz[v];
}

void calc(int v, int p = 0) {
    int res1 = _pow(TWO, n - 1);
    int res2 = _mul(_sub(1, _pow(TWO, n - sz[v])), _pow(TWO, sz[v] - 1));
    for (int u: adj[v])
        if (u != p) {
            calc(u, v);
            res2 = _sum(res2, _mul(_sub(1, _pow(TWO, sz[u])), _pow(TWO, n - sz[u] - 1)));
        }

    ans = _sum(ans, _mul(TWO, _sub(1, _sum(res1, res2))));
}

int main() {
    ios::sync_with_stdio(false), cin.tie(0);
    cin >> n;
    for (int i = 0; i < n - 1; i++) {
        int v, u;
        cin >> v >> u;
        v--, u--;

        adj[v].push_back(u);
        adj[u].push_back(v);
    }

    dfs(0);
    TWO = _pow(2, MOD - 2);
    calc(0);

    cout << ans << "\n";
    return 0;
}