#include <bits/stdc++.h>
 
using namespace std;
 
#define ld long double
#define ll long long
#define int ll
#define FF first.first
#define FS first.second
#define SF second.first
#define SS second.second
#define PB push_back
#define MP make_pair
#define all(cont) cont.begin(),cont.end()
#define rall(cont) cont.rbegin(), cont.rend()
#define FOR(i, j) for(int i=0;i<j;i++)
#define RFOR(i, j) for (int i=j;i>=0;i--)
#define GO cin.tie(NULL);
#define FAST ios_base::sync_with_stdio(false);
typedef pair<int,int> pii;
 
 
 
// Your function
//DEBBUGGING STUFF, JUST USE deb(a,b,c) and it will print the variables;
#define deb(...) logger(#__VA_ARGS__, __VA_ARGS__)
template<typename ...Args>
void logger(string vars, Args&&... values) {
    cout << vars << " = ";
    string delim = "";
    (..., (cout << delim << values, delim = ", "));
    cout<<endl;
}
const int MOD=1e9+7;

const int maxn=220;
const int maxlog=20;
int dp[maxn][maxlog];
vector<int> adj[maxn];
int ddepth[maxn];
int fac[2*maxn];
int fun[maxn][maxn];
int power(int a,int b){
	int res=1;
	while(b>0){
		if (b & 1)res*=a;
		b=b>>1;
		a*=a;
		a=a%MOD;
		res=res%MOD;
	}
	return res;
}

int invMod(int a){
	return power(a,MOD-2);
}

void dfs(int u,int p){
	dp[u][0]=p;
	for (int i=1;i<maxlog;i++){
		dp[u][i]=dp[dp[u][i-1]][i-1];
	}
	if (u!=p)ddepth[u]=1+ddepth[p];

	for (auto k:adj[u]){
		if (k!=p) dfs(k,u);
	}
}

int jmp(int a,int j){
  // dou um bit shift de i, se eu tenho que subir 2^i eu subo 2^i;
  for (int i=0;i<maxlog;i++) if ((j>>i) & 1) {
    a=dp[a][i];
  }
  return a;
}

int lca(int a,int b){
 
  if (ddepth[a]>ddepth[b]) swap(a,b);
  b=jmp(b,ddepth[b]-ddepth[a]);
  if (a==b) return a;
  
  for (int i=maxlog-1;i>=0;i--){
    if (dp[a][i]!=dp[b][i]){
      a=dp[a][i];
      b=dp[b][i];
    }
  }
  return dp[a][0];
}



int calculo(int a,int b){
	if (a==0) return 1;
	if (b==0) return 0;
	if (fun[a][b]!=-1)return fun[a][b];
	return fun[a][b]=(invMod(2)*(calculo(a,b-1)+calculo(a-1,b)))%MOD;
}

int ans(int a,int b){
	int lc=lca(a,b);
	int dista=ddepth[a]-ddepth[lc];
	int distb=ddepth[b]-ddepth[lc];
	//deb(dista,distb);
	if (distb==0) return 0;
	if (dista==0) return 1;
	return calculo(dista,distb);
}
int n;



int resp(){
	int tot=0;
	for (int i=1;i<=n;i++){
		for (int j=i+1;j<=n;j++){
			//deb(j,i,ans(j,i));
				tot+=ans(j,i);
				tot=tot%MOD;
			
		}
	}
	return tot;
}

int32_t main(){
	memset(fun,-1,sizeof(fun));
	GO FAST
	fac[0]=1;
	for (int i=1;i<2*maxn;i++){
		fac[i]=(i*fac[i-1])%MOD;
	}
	
	cin>>n;
	FOR(i,n-1){
		int a,b;cin>>a>>b;
		adj[a].PB(b);
		adj[b].PB(a);
	}
	int tot=0;
	for (int i=1;i<=n;i++){
		dfs(i,i);
		tot+=resp();
		tot=tot%MOD;
		//deb(tot);
	}
	cout<<(tot*invMod(n))%MOD<<endl;
}