#include<iostream>
#include<cstring>
#include<queue>
using namespace std;
typedef long long LL;
const LL N = 210,M=N*4,p=1e9+7,inv2 = 500000004;
LL n;
LL h[N],ne[M],e[M],idx;
LL depth[N];
LL fa[N][20];
LL f[N][N];//f[i][j] i,j为左右点的数量 
LL qmi(LL a,LL k){
    LL res = 1;
    while(k){
        if(k&1)res=(LL)res*a%p;
        a=(LL)a*a%p;
        k>>=1;
    }
    return res;
}
void add(LL a,LL b){
    e[idx]=b,ne[idx]=h[a],h[a]=idx++;
}
void bfs(LL root){
    queue<LL> q;
    memset(depth,0x3f,sizeof depth);
    memset(fa,0,sizeof fa);
    depth[0]=0,depth[root]=1;
    q.push(root);
    while(q.size()){
        LL t = q.front();q.pop();
        for(LL i=h[t];~i;i=ne[i]){
            LL j = e[i];
            if(depth[j]>depth[t]+1){
                depth[j]=depth[t]+1;
                q.push(j);
                fa[j][0]=t;
                for(LL k=1;k<=15;k++){
                    fa[j][k]=fa[fa[j][k-1]][k-1];
                }
            }
        }
    }
}
LL lca(LL a,LL b){
    if(depth[a]<depth[b])swap(a,b);
    for(LL k=15;k>=0;k--){
        if(depth[fa[a][k]]>=depth[b]){
            a=fa[a][k];
        }
    }
    if(a==b)return a;
    for(LL k=15;k>=0;k--){
        if(fa[a][k]!=fa[b][k]){
            a=fa[a][k];
            b=fa[b][k];
        }
    }
    return fa[a][0];
}
int main(){
    cin>>n;
    memset(h,-1,sizeof h);
    for(LL i=1;i<n;i++){
        LL a,b;
        cin>>a>>b;
        add(a,b);add(b,a);
    }
    for(LL i=1;i<=n;i++)f[0][i]=1;
    for(LL i=1;i<=n;i++)
        for(LL j=1;j<=n;j++)
            f[i][j]=(f[i-1][j]+f[i][j-1])*inv2%p;
    LL res = 0;
    for(LL i=1;i<=n;i++){
        bfs(i);
        for(LL j=1;j<=n;j++){
            for(LL k=1;k<j;k++){
                LL t = lca(j,k);
                // cout<<t<<endl;
                res = (res + f[depth[j]-depth[t]][depth[k]-depth[t]])%p;
            }
        }
    }
    cout<<res*qmi(n,p-2)%p<<endl;
}