#include <bits/stdc++.h>

using namespace std;
#define int long long
int used[205], pred[205][25], tin[205], tout[205], d[205], timer=0, inf=1e9+7, p[405][405];
vector<int> g[205];
int bin_p(int x, int deg)
{
    int res=1;
    while (deg)
    {
        if(deg&1)
            res*=x;
        x*=x;
        res%=inf; x%=inf;
        deg>>=1;
    }
    return res;
}
int inv(int x)
{
    return bin_p(x, inf-2);
}
void dfs(int v)
{
    used[v]=1;
    tin[v]=++timer;
    for (int i=1; i<=20; i++)
        pred[v][i]=pred[pred[v][i-1]][i-1];
    for (auto i:g[v])
    {
        if (!used[i])
        {
            d[i]=d[v]+1;
            pred[i][0]=v;
            dfs(i);
        }
    }
    tout[v]=++timer;
}
bool upper(int x, int y)
{
    return tin[x]<=tin[y] && tout[x]>=tout[y];
}
int lca(int a, int b)
{
    if(d[a]<d[b])
        swap(a,b);
    for(int i=9;i>=0;i--)
    {
        if(d[pred[a][i]]>=d[b])
            a=pred[a][i];
    }
    if(a==b)
     return b;
    for(int i=9;i>=0;i--)
    {
        if(pred[a][i]!=pred[b][i])
            a=pred[a][i],b=pred[b][i];
    }
    return pred[a][0];
}
signed main()
{
    int i, j, k, x, y, res, n;
    for (i=0; i<=200; i++)
        p[i][0]=1;
    for (i=1; i<=200; i++)
    {
        for (j=1; j<=200; j++)
            p[i][j]=(p[i-1][j]+p[i][j-1])%inf*inv(2)%inf;
    }
    cin>>n;
    for(i=0; i<n-1; i++)
    {
        cin>>x>>y;
        g[x].push_back(y);
        g[y].push_back(x);
    }
    res=0;
    for(i=1; i<=n; i++)
    {
        memset(d, 0, sizeof(d));
        memset(used, 0, sizeof(used));
        memset(pred, 0, sizeof(pred));
        timer=0;
        memset(tin, 0, sizeof(tin));
        memset(tout, 0, sizeof(tout));
        dfs(i);
        for (j=1; j<=n; j++)
        {
            for (k=j+1; k<=n; k++)
            {
                int v=lca(j, k);
                int dist1=d[j]-d[v], dist2=d[k]-d[v];
                res=(res+p[dist1][dist2])%inf;
            }
        }
    }
    cout<<res*inv(n)%inf;
    return 0;
}
