#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<queue>
#define ll long long
using namespace std;
const int N=310,M=100005,mod=1e9+7;
int n,tot;
ll inv,ans;
int head[N],ver[M],Nxt[M],dep[N],fa[N][20];
ll f[N][N];
void add(int x,int y){
	ver[++tot]=y;
	Nxt[tot]=head[x];
	head[x]=tot;
}
void dfs(int u,int now){
	dep[u]=now;
	for(int i=head[u];i;i=Nxt[i]){
		int y=ver[i];
		if(y==fa[u][0]) continue;
		fa[y][0]=u;
		for(int j=1;j<=18;j++){
			fa[y][j]=fa[fa[y][j-1]][j-1];
		}
		dfs(y,now+1);
	}
}
int LCA(int x,int y){
	if(dep[x]<dep[y]) swap(x,y);
	for(int j=18;j>=0;j--){
		if(dep[fa[x][j]]>=dep[y]) x=fa[x][j];
	}
	if(x==y) return x;
	for(int j=18;j>=0;j--){
		if(fa[x][j]!=fa[y][j]){
			x=fa[x][j];y=fa[y][j];
		}
	}
	return fa[x][0];
}
ll ksm(ll x,ll p){
	ll sum=1;
	while(p){
		if(p&1) sum=sum*x%mod;
		x=x*x%mod;
		p>>=1;
	}
	return sum;
}
int main()
{
	scanf("%d",&n);
	
	inv=ksm(2,mod-2);
	
	for(int i=1;i<=n;i++){
		f[i][0]=1;
		f[0][i]=0;
	}
	
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			f[i][j]=(f[i-1][j]+f[i][j-1])*inv%mod;
		}
	}
	
	for(int i=1;i<n;i++){
		int x,y;
		scanf("%d%d",&x,&y);
		add(x,y);add(y,x);
	}
	
	for(int i=1;i<=n;i++){
		memset(fa,0,sizeof(fa));
		memset(dep,0,sizeof(dep));
		dfs(i,1);
		
//		for(int j=1;j<=n;j++){
//			printf("%d %d\n",j,dep[j]);
//		} 
		
		for(int j=1;j<=n;j++){
			for(int k=j+1;k<=n;k++){
				int lca=LCA(j,k);
//				printf("以%d为根 %d 和 %d 的 LCA 是%d\n",i,j,k,lca);
				ans=(ans+f[dep[j]-dep[lca]][dep[k]-dep[lca]])%mod;
			}
		}
	}
	
	printf("%lld\n",ans*ksm(n,mod-2)%mod);
	return 0;
}
