#include <bits/stdc++.h>

using namespace std;
typedef long long ll;
const ll MOD = 1000000007;

vector<vector<int>> g;

ll powm(ll x, ll y) {
  if (y == 0) return 1;
  ll d = powm(x, y/2);
  d = (d*d)%MOD;
  if (y%2) d = (d*x)%MOD;
  return d;
}

ll ans = 0;
ll f[201][201];
ll d[201];

vector<int> dfs(int v, int p = -1) {
  vector<vector<int>> nv;
  if (p == -1) d[v] = 0;
  
  for (int i : g[v]) if (i != p) {
    d[i] = d[v] + 1;
    nv.push_back(dfs(i, v));
  }
  
  for (int i = 0; i < nv.size(); ++i) {
    for (int j = i+1; j < nv.size(); ++j) {
      for (int a : nv[i]) {
        for (int b : nv[j]) {
          if (a < b) ans = (ans + f[d[a] - d[v]][d[b] - d[v]]) % MOD;
          else ans = (ans + f[d[b] - d[v]][d[a] - d[v]]) % MOD;
        }
      }
    }
    for (int a : nv[i]) if (v > a) ans = (ans + 1) % MOD;
  }
  vector<int> resv;
  for (auto v : nv) for (int i : v) resv.push_back(i);
  resv.push_back(v);

  return resv;
}

int main() {
  int n;
  cin >> n;
  
  for (int x = 0; x <= n; ++x) {
    for (int y = 0; y <= n; ++y) {
      if (x == 0) f[x][y] = 0;
      else if (y == 0) f[x][y] = 1;
      else f[x][y] = (f[x-1][y] + f[x][y-1]) * powm(2, MOD-2);
      f[x][y] %= MOD;
    }
  }
  
  g.resize(n);
  for (int i = 0; i < n-1; ++i) {
    int x, y;
    cin >> x >> y; --x; --y;
    g[x].push_back(y);
    g[y].push_back(x);
  }
  
  for (int i = 0; i < n; ++i) {
    dfs(i);
  }
  
  ans = (ans * powm(n, MOD-2)) % MOD;
  
  cout << ans << '\n';
}