#include <bits/stdc++.h>
using namespace std;

int n,x,y;
int dis[210][210]={0};
vector<int> edge[210];
const long long p=1e9+7;
long long ans,ex[210][210]={0};
long long ksm(long long a,int e)
{
    long long tmp=1;
    while(e)
    {
        if(e%2)tmp=tmp*a%p;
        e/=2;
        a=a*a%p;
    }
    return tmp;
}

void dfs(int i,int src)
{
    for(int j=0;j<edge[i].size();j++)
    if(dis[src][edge[i][j]]==0&&edge[i][j]!=src)
    {
        dis[src][edge[i][j]]=dis[src][i]+1;
        dfs(edge[i][j],src);
    }
}

int main() {
    for(int i=1;i<210;i++)ex[0][i]=1;
    for(int i=0;i<210;i++)
    for(int j=1;j<i;j++)
    {
        ex[j][i-j]=(ex[j][i-j-1]+ex[j-1][i-j])*ksm(2,p-2)%p;
    }

    cin>>n;
    for(int i=0;i<n-1;i++)
    {
        cin>>x>>y;
        edge[x].push_back(y);
        edge[y].push_back(x);
    }
    for(int i=1;i<=n;i++)dfs(i,i);
    for(int i=1;i<=n;i++)
    for(int j=i+1;j<=n;j++)
    {
        for(int k=1;k<=n;k++)
        if(dis[i][k]-dis[j][k]==dis[i][j])ans=(ans+1)%p;
        else if(fabs(dis[i][k]-dis[j][k])<dis[i][j])ans=(ans+ex[(dis[i][j]+dis[j][k]-dis[i][k])/2][(dis[i][j]-dis[j][k]+dis[i][k])/2])%p;
    }
    cout<<ans*ksm(n,p-2)%p<<endl;
    return 0;
}