#include <random>
#include <stdio.h>
#include <bits/stdc++.h>
#include <unordered_set>
#include <unordered_map>


using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<ll, ll> pll;
typedef pair<ll, int> pli;
typedef pair<int, ll> pil;
typedef pair<int, int> pii;

#define ls rt<<1
#define rs ls|1
#define fst first
#define sed second
#define psb push_back
#define lowbit(x) ((x) & -(x))
#define SZ(x) ((int)(x).size())
#define sqr(x) (1LL * (x) * (x))
#define sqrd(x) ((x) * (x))
#define ALL(x) (x).begin(), (x).end()
#define MEM(x, y) memset((x), (y), sizeof(x))
#define Diz(x) (lower_bound(dz.begin(), dz.end(), (x)) - dz.begin())
#define DISCRETE(x) (x).push_back(INT_MIN), (sizeof((x).back()) == 8 ? (x).back() = LLONG_MIN : 0), sort((x).begin(), (x).end()), (x).erase(unique((x).begin(), (x).end()), (x).end())

#ifdef MPDFDFL
#define debug(x) cout << "[" __FUNCTION__ ": " #x " = " << (x) << "]\n"
#define TIME cout << "RuningTime: " << clock() << "ms\n", 0
#define __int128_t long long
#define __gcd(x, y) gcd((x), (y))
#define __builtin_popcount(x) _BitCnt((uint)(x))
#define __builtin_popcountll(x) _BitCnt((ull)(x))
#define __lg (int)log2
#else
#define TIME 0
#endif
#define hash_ 1000000009
#define gc p1 == p2 && (p2 = (p1 = buf) + fread(buf, 1, 1000000, stdin), p1 == p2) ? EOF : *p1++;
#define IOS ios::sync_with_stdio(0), cin.tie(0)

template<typename S, typename T> inline bool Min(S& a, const T& b) { return a > b ? a = b, true : false; }
template<typename S, typename T> inline bool Max(S& a, const T& b) { return a < b ? a = b, true : false; }
template<class T> inline bool IsPri(T x) { if (x < 2) return false; for (T i = 2; i * i <= x; ++i) if (x % i == 0) return false; return true; }
template<class T> T gcd(T a, T b) { a = abs(a), b = abs(b); return b == 0 ? a : gcd(b, a % b); };
template<typename T> inline int _BitCnt(T x) { int cnt = 0; while (x)++cnt, x &= x - 1; return cnt; }
template<class T>double dpow(double a, T b) { double res = 1.0; for (; b > 0; b >>= 1) { if (b & 1)res = res * a; a = a * a; }return res; }
inline int read() { static char buf[1000000], * p1 = buf, * p2 = buf; int x = false; char ch = gc; bool sgn = false; while (ch != '-' && (ch < '0' || ch > '9')) ch = gc; if (ch == '-') sgn = true, ch = gc; while (ch >= '0' && ch <= '9') x = (x << 1) + (x << 3) + (ch ^ 48), ch = gc; return sgn ? -x : x; }
ll qpow(ll a, ll b, ll mod) { ll res = 1; for (; b > 0; b >>= 1) { if (b & 1) res = res * a % mod; a = a * a % mod; } return res; }
inline ll inv(ll a, ll p) { return qpow(a, p - 2, p); }

int dx[4] = { 1,-1,0,0 };
int dy[4] = { 0,0,-1,1 };
const int mod = 1e9 + 7;
const int INF = 0x3f3f3f3f;
const ll LINF = 0x3f3f3f3f3f3f3f3f;
const int N = 200 + 10;
const int M = 5e3 + 10;
const double PI = acos(-1.0);
const double eps = 1e-8;

vector<int>g[N];
int dep[N], f[N][30];
ll d[N][N];
void dfs(int x, int fa) {
    f[x][0] = fa; dep[x] = dep[fa] + 1;
    for (int j = 1; j <= 20; j++) {
        f[x][j] = f[f[x][j - 1]][j - 1];
    }
    for (int v : g[x]) {
        if (v == fa)continue;
        dfs(v, x);
    }
}
int LCA(int x, int y) {
    if (dep[x] < dep[y])swap(x, y);
    for (int i = 20; i >= 0; i--) {
        if (dep[f[x][i]] >= dep[y]) {
            x = f[x][i];
        }
    }
    if (x == y)return x;
    for (int i = 20; i >= 0; i--) {
        if (f[x][i] != f[y][i]) {
            x = f[x][i];
            y = f[y][i];
        }
    }
    return f[x][0];
}
int main() {
#ifdef MPDFDFL
	freopen("D:/input.txt", "r", stdin);
	//freopen("D:/output.txt", "w", stdout);
#endif
	IOS;
	int n;
	cin >> n;
	for (int i = 1; i < n; i++) {
		int u, v;
		cin >> u >> v;
		g[u].push_back(v);
		g[v].push_back(u);
	}
	for (int i = 1; i <= n; i++)
		d[i][0] = 1, d[0][i] = 0;
	ll inv2 = inv(2, mod);
	for (int i = 1; i <= n; i++)
		for (int j = 1; j <= n; j++)
			d[i][j] = (d[i - 1][j] + d[i][j - 1]) % mod * inv2 % mod;
	ll ans = 0;
	for (int i = 1; i <= n; i++) {
		dfs(i, 0);
		for (int x = 1; x <= n; x++)
			for (int y = 1; y < x; y++) {
				int lca = LCA(x, y);
				ans = (ans + d[dep[y] - dep[lca]][dep[x] - dep[lca]]) % mod;
			}
	}
	cout << ans * inv(n, mod) % mod << endl;

	return TIME;
}