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
#include <iostream>
#include <vector>
#include <functional>
using namespace std;

//  a^b % m
long long powmod(long long a, long long b, long long m)
{
    long long r = 1;
    for (; b>0; b>>=1, a=a*a%m)
        if (b&1)
            r = r*a%m;
    return r;
}

int main()
{
    int N;
    cin>>N;
    vector<vector<int>> E(N);
    for (int i=0; i<N-1; i++)
    {
        int A, B;
        cin>>A>>B;
        E[A-1].push_back(B-1);
        E[B-1].push_back(A-1);
    }

    long long M = 1000000007;

    vector<long long> P2(N+1);
    P2[0] = 1;
    for (int i=1; i<=N; i++)
        P2[i] = P2[i-1]*2%M;

    long long ans = 0;
    function<int(int, int)> f = [&](int c, int p)
    {
        int s = 0;
        long long ph = P2[N-1];
        int lc = 0;
        for (int e: E[c])
            if (e != p)
            {
                int n = f(e, c);
                ph -= (P2[n]-1+M)%M;
                s += n;
                lc++;
            }
        if (N-s-1>0)
        {
            ph -= (P2[N-s-1]-1+M)%M;
            lc++;
        }
        ph -= 1;
        ans += (ph%M+M)%M * powmod(P2[N], M-2, M) % M;
        ans %= M;
        return s+1;
    };
    f(0, -1);
    cout<<ans<<endl;
}
