//什么时候我才能有杜爷一半强啊/kk
#include<cstdio>
const int N=210,MOD=1e9+7,iv2=5e8+4;
int n,ans,dfncnt,tot,h[N],depth[N],sze[N],dfn[N],pos[N],la[N][N],f[N][N];
struct edge{int v,nxt;}e[N<<1];
int read(){
	char ch=getchar();int nn=0,ssss=1;
	while(ch<'0'||ch>'9'){if(ch=='-')ssss*=-1;ch=getchar();}
	while(ch>='0'&&ch<='9'){nn=nn*10+(ch-'0');ch=getchar();}
	return nn*ssss;
}
int qpow(int a,int b){
	int ret=1;
	while(b){if(b&1)ret=1ll*ret*a%MOD;a=1ll*a*a%MOD;b>>=1;}
	return ret;
}
int Add(int &a,int b){return(a+=b)>=MOD?a-=MOD:a;}
bool add(int u,int v){e[++tot].v=v;e[tot].nxt=h[u];h[u]=tot;return true;}
bool dfs(int np,int lst){
	depth[np]=depth[lst]+1;dfn[np]=++dfncnt;pos[dfncnt]=np;sze[np]=1;
	for(int i=h[np];i;i=e[i].nxt){
		if(e[i].v==lst)continue;
		dfs(e[i].v,np);
		for(int j=dfn[np];j<dfn[np]+sze[np];j++)
			for(int k=dfn[e[i].v];k<dfn[e[i].v]+sze[e[i].v];k++)
				la[pos[j]][pos[k]]=la[pos[k]][pos[j]]=np;
		sze[np]+=sze[e[i].v];
	}
	return true;
}
int main(){
	n=read();
	for(int i=1;i<n;i++){
		int u=read();int v=read();
		add(u,v);add(v,u);
	}
    for(int i=1;i<=n;i++)f[0][i]=1;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++) 
            f[i][j]=1ll*(f[i-1][j]+f[i][j-1])*iv2%MOD;
	for(int i=1;i<=n;i++){
		dfncnt=0;dfs(i,0);
		for(int j=2;j<=n;j++)
			for(int k=1;k<j;k++){
				int dl=depth[la[j][k]],dj=depth[j],dk=depth[k];
				Add(ans,f[dj-dl][dk-dl]);
//				if(f[dj-dl][dk-dl])printf("%d %d %d,add %d\n",i,j,k,f[dj-dl][dk-dl]);
			}
	}
	printf("%d",1ll*ans*qpow(n,MOD-2)%MOD);
}