#include <bits/stdc++.h>
#define int int64_t
#define all(x) x.begin(), x.end()
#define send ios_base::sync_with_stdio(false);
#define help cin.tie(NULL)
#define inf (int)(1e17+1)
#define mod (int)(1e9+7)
#define N (int)(2e2+5)
#define fi first
#define se second
#define endl "\n"
#define eps (double)(1e-9)
#define sa cout<<"sa"<<endl
using namespace std;

namespace math{
	vector <int> fac(2e5,1);
	int exp(int a,int b){
		if(!b) return 1;
		if(b&1) return a*exp(a,b-1)%mod;
		int t=exp(a,b/2);
		return t*t%mod;
	}
	void fc(){for(int i=2;i<2e5;i++)fac[i]=i*fac[i-1]%mod;}
	int com(int n,int r){return (fac[n]*exp(fac[r]*fac[n-r]%mod,mod-2))%mod;}
	int per(int n,int r){return (fac[n]*exp(fac[n-r],mod-2))%mod;}
}using namespace math;

vector <int> adj[N],sz(N),d(N,-1),up(N);
vector <vector<int>> dp(N,vector<int>(N));

int dfs0(int c,int pre){
	sz[c]=1;
	d[c]=d[pre]+1;
	up[c]=pre;
	for(auto x:adj[c]){
		if(x==pre) continue;
		sz[c]+=dfs0(x,c);
	}
	return sz[c];
}

void solve(){
	int n;cin>>n;
	for(int i=1;i<n;i++){
		int u,v;cin>>u>>v;
		adj[u].push_back(v);
		adj[v].push_back(u);
	}

	for(int i=0;i<=n;i++){
		for(int j=0;j<=n;j++){
			if(!i) dp[i][j]=1;
			else if(!j) dp[i][j]=0;
			else dp[i][j]=(dp[i][j-1]+dp[i-1][j])*exp(2,mod-2)%mod;
		}
	}

	int ans=0,k=exp(n,mod-2);
	for(int i=1;i<=n;i++){
		dfs0(i,0);
		for(int j=i+1;j<=n;j++){
			ans=(ans+(sz[j]*k%mod))%mod;
			int cur=up[j],cs=sz[j];
			while(cur!=i) {
				int a=d[j]-d[cur];
				ans=(ans+
					(dp[a][d[cur]]*k%mod)*(sz[cur]-cs)%mod
					)%mod;
				cs=sz[cur];
				cur=up[cur];

			}
		}
	}
	cout<<ans;
}

int32_t main(){ 
    send help;
    #ifdef LOCAL
  	freopen("in.txt", "r", stdin); freopen("out.txt", "w", stdout);
	#endif
	int t=1;fc();
	//cin>>t;
	while(t--) solve();
	return 0;
}