#include<iostream>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<string>
#include<vector>
#define Debug(in) cout<<#in<<"="<<(in)<<endl
#define mm(a,x) memset(a,x,sizeof(a))
#define mkp(a,b) make_pair(a,b)
#define all(x) x.begin(),x.end()
#define sz(x) (int)x.size()
#define sync std::ios::sync_with_stdio(false);std::cin.tie(0)
#define endl '\n'
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
const int inf=0x3f3f3f3f,mod=1e9+7;
const int N=205;
int n;
ll nn,n2,res;
vector<int>e[205];
ll f[N][N],sz[N],ds[N];
ll qpow(ll a,ll b)
{
    ll res=1;
    while(b)
    {
        if(b&1) res=res*a%mod;
        b>>=1;
        a=a*a%mod;
    }
    return res;
}
void dfs1(int u,int fa)
{
    sz[u]=1;
    for(int v:e[u])
    {
        if(v==fa) continue;
        dfs1(v,u);
        sz[u]+=sz[v];
    }
}
void dfs2(int u,int fa,int d,int rt)
{
    if(u<rt)
    {
        for(int i=0;i<d;++i)
            res=(res+ds[i]*nn%mod*f[i][d-i]%mod)%mod;

    }
    for(int v:e[u])
    {
        if(v==fa) continue;
        ds[d]=sz[u]-sz[v];
        dfs2(v,u,d+1,rt);
    }
}
int main(void)
{
    sync;
    cin>>n;
    nn=qpow(n,mod-2);
    n2=qpow(2,mod-2);
    for(int i=1;i<n;++i)
    {
        int u,v;
        cin>>u>>v;
        e[u].push_back(v);
        e[v].push_back(u);
    }
    f[0][0]=1;
    for(int i=1;i<=200;++i)
    {
        f[0][i]=1;
        f[i][0]=0;
    }
    for(int i=1;i<=200;++i)
        for(int j=1;j<=200;++j)
            f[i][j]=(f[i-1][j]+f[i][j-1])*n2%mod;
    for(int i=1;i<=n;++i)
    {
        dfs1(i,0);
        dfs2(i,0,0,i);
    }
    cout<<res<<endl;
    return 0;
}
//考虑边界！！！
//Think TWICE, Code ONCE!