//#define DEBUG
#ifndef DEBUG
#pragma GCC optimize("Ofast")
#pragma GCC optimization ("unroll-loops")
#pragma GCC target("avx,avx2,fma")
#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
#endif
#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
#define f first
#define s second
#define all(x) begin(x), end(x)
#define rall(x) (x).rbegin(), (x).rend()
#define sz(x) (int)(x).size()
#define FOR(i, a, b) for(int i = (a); i < (b); i++)
#define F0R(i, x) FOR(i, 0, x)
#define FORd(i, a, b) for(int i = (b)-1; i >= (a); i--)
#define F0Rd(i, x) FORd(i, 0, x)
#define ckif(a, b, c) ((c) ? (a) : (b))
const int MAX_N = 201;
const ll MOD = 1000000007;
const ll INF = 1e18;

ll add(ll a, ll b){ return (a+b)%MOD; }
ll sub(ll a, ll b){ return (a-b+MOD)%MOD; }
ll mul(ll a, ll b){ return (a*b)%MOD; }
ll ADD(ll &a, ll b){ return a=add(a, b); }
ll SUB(ll &a, ll b){ return a=sub(a, b); }
ll MUL(ll &a, ll b){ return a=mul(a, b); }
ll po(ll a, ll b = MOD-2){ return ckif(ckif(mul(a, po(a, b-1)), po(mul(a, a), b/2), b&1), 1, b); }

int n;
ll ans;
vector<int> adj[MAX_N];
ll sz[MAX_N], depth[MAX_N], anc[MAX_N][21], ev[MAX_N][MAX_N];

int dfs(int curr, int par = -1){
    sz[curr] = 1;
    for(int child : adj[curr]){
        if(child == par) continue;
        depth[child] = depth[curr]+1;
        anc[child][0] = curr;
        sz[curr] += dfs(child, curr);
    }
    return sz[curr];
}

int lca(int a, int b){
    if(depth[a] < depth[b]) swap(a, b);
    F0Rd(i, 21) if(depth[a] >= depth[b]+(1<<i))
        a = anc[a][i];
    F0Rd(i, 21) if(anc[a][i] != anc[b][i]){
        a = anc[a][i];
        b = anc[b][i];
    }
    return (a==b)?a:anc[a][0];
}

ll get_ans(int a, int b){
    ll curr_ans = 0;
    int nxt_a = a, dist = depth[a]+depth[b]-2*depth[lca(a, b)], prev_sz_a = 0;
    while(nxt_a != lca(a, b)){
        ADD(curr_ans, mul(ev[depth[a]-depth[nxt_a]][dist-depth[a]+depth[nxt_a]], sz[nxt_a]-prev_sz_a));
        prev_sz_a = sz[nxt_a], nxt_a = anc[nxt_a][0];
    }
    int nxt_b = b, prev_sz_b = 0;
    while(nxt_b != lca(a, b)){
        ADD(curr_ans, mul(ev[dist-depth[b]+depth[nxt_b]][depth[b]-depth[nxt_b]], sz[nxt_b]-prev_sz_b));
        prev_sz_b = sz[nxt_b], nxt_b = anc[nxt_b][0];
    }
    ADD(curr_ans, mul(ev[depth[a]-depth[lca(a, b)]][depth[b]-depth[lca(a, b)]], n-prev_sz_a-prev_sz_b));
    return curr_ans;
}

int main(int argc, const char * argv[]){
    ios_base::sync_with_stdio(0), cin.tie(0);
    cin >> n;
    F0R(i, n+1) F0R(j, n+1){
        if(!i) ev[i][j] = 1;
        else if(!j) ev[i][j] = 0;
        else ev[i][j] = mul(po(2), add(ev[i-1][j], ev[i][j-1]));
    }
    F0R(i, n-1){
        int a, b; cin >> a >> b; a--, b--;
        adj[a].push_back(b);
        adj[b].push_back(a);
    }
    dfs(0);
    FOR(x, 1, 21) F0R(i, n)
        anc[i][x] = anc[anc[i][x-1]][x-1];
    F0R(i, n) FOR(j, i+1, n){
        ADD(ans, get_ans(j, i));
    }
    cout << mul(ans, po(n)) << endl;
    return 0;
}