﻿#pragma GCC optimize("Ofast")
#pragma GCC optimize("unroll-loops")
#pragma GCC target("sse,sse2,sse3,ssse3,abm,mmx,tune=native")
#include <iostream>
#include <vector>
#include <algorithm>
#include <string> 
#include <set>
#include <cmath>
#include <bitset>
#include <iomanip>
#include <queue>
#include <stack>
#include <map>
#include <unordered_map>
#include <unordered_set>
#include <chrono>
#include <random>
#include <complex>
using namespace std;

mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());

inline void boostIO() {
	ios_base::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	cout << fixed << setprecision(18);
}

bool isPrime(int x) {
	if (x <= 4 || x % 2 == 0 || x % 3 == 0) return x == 2 || x == 3;
	for (int i = 5; i * i <= x; i += 6) if (x % i == 0 || x % (i + 2) == 0) return 0; return 1;
}

typedef long long int ll;
typedef long double ld;
typedef unsigned long long ull;

typedef vector<int> vi;
typedef vector<ll> vll;
typedef pair<ll, ll> pii;

#define fori(n) for(int i = 0; i < (n); ++i)
#define forj(n) for(int j = 0; j < (n); ++j)
#define fork(n) for(int k = 0; k < (n); ++k)
#define forx(n) for(int x = 0; x < (n); ++x)

#define all(x) (x).begin(), (x).end()
#define rall(x) (x).rbegin(), (x).rend()
#define ff first
#define ss second
#define debug(x) cerr << #x << " = " << x << endl;
#define debug_p(x) cerr << #x << " " << x.ff << " " << x.ss << endl;
#define debug_v(x) cerr << #x << " "; for (auto ii : x) cout << i << " "; cout << endl;
#define debug_vp(x) cerr << #x << " "; for (auto ii : x) cout << '[' << ii.ff << " " << ii.ss << ']'; cout << endl;
#define mp make_pair
#define rand kjsdflsdfsdlsjdlkfsdjflsjdfl 

#define Return cerr<<endl<<"RUNTIME: "<<1.0*clock()/CLOCKS_PER_SEC << " s" <<endl; return 0;

#define PI 3.1415926535897932384626

ll gcd(ll a, ll b) { return b ? gcd(b, a % b) : a; }
ll lcm(ll a, ll b) { return a * b / gcd(a, b); }


bool BREAKTIME(ld v) {
	return 1.0 * clock() >= v * CLOCKS_PER_SEC;
}

/////////////////////
#define int long long
int mod = 1e9 + 7;
#define endl '\n'
/////////////////////

int inf = 2e18;

int dp[201][201] = {};
vector<int> adj[201] = {};

int Pow(int a, int b) {
	if (b == 0) return 1;
	int c = Pow(a, b / 2);
	c = c * c % mod;
	if (b % 2) c = c * a % mod;
	return c;
}

int d(int a) {
	return Pow(a, mod - 2);
}

vector<pair<int,int>> w;
void dfs2(int a, int d = 1, int prev = 0) {
	w.push_back(mp(a, d));
	for (auto& b : adj[a]) {
		if (b == prev) continue;
		dfs2(b, d+1, a);
	}
}

int ans = 0;
void dfs(int a, int prev = 0) {
	vector<vector<pair<int,int>>> V;
	for (auto& b : adj[a]) {
		if (b == prev) continue;
		w.assign(0, mp(0, 0));
		dfs2(b, 1, a);
		V.push_back(w);
	}
	for (auto v : V) {
		for (auto x : v) {
			if (a > x.ff) {
				ans += 1;
				ans %= mod;
			}
		}
	}

	for (int i = 0; i < V.size(); ++i) {
		for (int j = 0; j < V.size(); ++j) {
			if (i == j) continue;
			for (int ii = 0; ii < V[i].size(); ++ii) {
				for (int jj = 0; jj < V[j].size(); ++jj) {
					if (V[i][ii].ff > V[j][jj].ff) continue;
					ans += dp[V[i][ii].ss][V[j][jj].ss];
					ans %= mod;
				}
			}
		}
	}

	for (auto& b : adj[a]) {
		if (b == prev) continue;
		dfs(b, a);
	}

}

int32_t main() {
	boostIO();	
	dp[0][0] = 1;
	for (int i = 1; i <= 200; ++i) {
		for (int j = 0; j <= 200; ++j) {
			if (j == 0) {
				dp[i][j] = dp[i - 1][j];
			}
			else {
				dp[i][j] = (dp[i][j - 1] + dp[i - 1][j]) * d(2);
				dp[i][j] %= mod;
			}
		}
	}
	int n; cin >> n;
	fori(n - 1) {
		int a, b; cin >> a >> b;
		adj[a].push_back(b);
		adj[b].push_back(a);
	}
	for (int i = 1; i <= n; ++i) {
		dfs(i);
	}
	ans *= d(n);
	ans %= mod;
	cout << ans << endl;
	
}