#include<bits/stdc++.h>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<vector>
#include<queue>
#include<algorithm>
#pragma GCC optimize("Ofast,no-stack-protector")
#define int long long
//#define ull signed long long
#define mm 1000050
//#define nn 500005*200
#define oo 1000000000000
#define ll long long
//ios::sync_with_stdio(false);
//#define mod 998244353
using namespace std;


const int mod=1e9+7;

//////////////////////////////////////////////
void exgcd(ll a,ll b,ll &d,ll &x,ll &y)
{
    if(b==0){d=a;x=1;y=0;}
    else{
        exgcd(b,a%b,d,x,y);
        ll t=x;x=y;y=t-a/b*y;
    }
}
int invf(int b,int p)
{
    int x;int y;int d;
    exgcd(b,p,d,x,y);
    return (x+p)%p;
}
///////////////////////////////////////////
int x,y;int inde=0;
int n;int head[mm];int rt;
struct edge
{
    int to;
    int next;
}e[mm<<1];

void add(int u,int v)
{
    e[++inde].to=v;
    e[inde].next=head[u];
    head[u]=inde;
}
///////////////////////////////////////////////
int dep[mm];int fa[mm];
int f[205][21];
int dp[202][202];

void dfs(int x,int f)
{
    dep[x]=dep[f]+1;
    fa[x]=f;
    for(int i=head[x];i;i=e[i].next)
    {
        int v=e[i].to;
        if(v==f){continue;}
        dfs(v,x);
    }
}

void init()
{
    dep[rt]=0;
    fa[rt]=0;
    dfs(rt,0);
    for(int i=1;i<=n;i++){f[i][0]=fa[i];}
    for(int j=1;j<=20;j++)
    {
        for(int i=1;i<=n;i++){
            f[i][j]=f[f[i][j-1]][j-1];
        }
    }
}

int lca(int x,int y)
{
    if(dep[x]<dep[y]){swap(x,y);}
    if(dep[x]!=dep[y]){
        for(int i=20;i>=0;i--)
        {
            if(dep[f[x][i]]>dep[y]){x=f[x][i];}
        }
        x=f[x][0];
    }
    if(x==y){return x;}
    for(int i=20;i>=0;i--){
        if(f[x][i]!=f[y][i]){
            x=f[x][i];
            y=f[y][i];
        }
    }
    return f[x][0];
}
/////////////////////////////////////////////////////////////////
//int dp[202][202];
void init2()
{
    for(int i=1;i<=200;i++){dp[0][i]=1;}
    for(int i=1;i<=200;i++)
    {
        for(int j=1;j<=200;j++)
        {
            dp[i][j]=(dp[i-1][j]+dp[i][j-1])*invf(2,mod);
            dp[i][j]%=mod;
        }
    }
}
///////////////////////////////////////////////////////////////////
int ans=0;



signed main()
{
    scanf("%lld",&n);
    for(int i=1;i<=n-1;i++){
        scanf("%lld%lld",&x,&y);
        add(x,y);
        add(y,x);
    }
    init2();
    for(int k=1;k<=n;k++)
    {
        rt=k;
        init();
        for(int i=2;i<=n;i++)
        {
            for(int j=1;j<=i-1;j++)
            {
                int li=dep[i]-dep[lca(i,j)];
                int lj=dep[j]-dep[lca(j,i)];
                ans+=(dp[li][lj]*invf(n,mod));
                //cout<<"root "<<rt<<" "<<i<<" "<<j<<" "<<lca(i,j)<<"[][] "<<li<<" "<<lj<<" "<<dp[li][lj]<<endl;
                ans%=mod;
            }
        }
    }
    cout<<ans%mod<<endl;
    return 0;
}
