#include <cstdio>
#include <vector>
#include <cstring>
#define LL long long

using namespace std;

const LL MOD = 1e9 + 7;
const int MAXN = 2e2 + 5;
int n, dist[MAXN], father[MAXN][10];
LL dp[MAXN][MAXN];
vector<int> edge[MAXN];

LL QPow(LL x, LL t){
    LL ret = 1;
    while(t){
        if (t & 1) ret = ret * x % MOD;
        x = x * x % MOD; t /= 2LL;
    }
    return ret;
}

void dfs(int x, int fa){
    father[x][0] = fa; dist[x] = dist[fa] + 1;
    for (int i = 1; i < 10; i++) father[x][i] = father[father[x][i - 1]][i - 1];
    for (int v: edge[x]) if (v != fa) dfs(v, x);
}

int lca(int x, int y){
    if (dist[x] < dist[y]) swap(x, y);
    int delta = dist[x] - dist[y];
    for (int i = 0; i < 10; i++)
        if ((delta >> i) & 1) x = father[x][i];
    if (x == y) return x;
    for (int i = 9; i >= 0; i--){
        if (father[x][i] == father[y][i]) continue;
        x = father[x][i];
        y = father[y][i];
    }
    return father[x][0];
}

int main(){
    scanf("%d", &n);
    for (int i = 0; i <= n; i++) edge[i].clear();
    for (int i = 1; i < n; i++){
        int x, y; scanf("%d%d", &x, &y);
        edge[x].push_back(y);
        edge[y].push_back(x);
    }

    LL ans = 0;
    LL divN = QPow(n, MOD - 2);
    LL div2 = QPow(2, MOD - 2);

    for (int i = 1; i <= n; i++) dp[0][i] = 1, dp[i][0] = 0;
    for (int i = 1; i <= n; i++){
        for (int j = 1; j <= n; j++){
            dp[i][j] = (dp[i - 1][j] + dp[i][j - 1]) * div2 % MOD;
        }
    }

    for (int i = 1; i <= n; i++) {
        dist[i] = 0; dfs(i, i);
        LL cur = 0;
        for (int u = 1; u <= n; u++){
            for (int v = u + 1; v <= n; v++){
                int f = lca(u, v);
                cur = (cur + dp[dist[v] - dist[f]][dist[u] - dist[f]]) % MOD;
            }
        }
        ans = (ans + cur * divN % MOD ) % MOD;
    }

    printf("%lld\n", ans);

    return 0;
}
