func_code_string: #include <bits/stdc++.h>   #define int long long   #define mod 1000000007    #define inv 500000004      using namespace std;      int ksm(int a, int b) {    int ans = 1, base = a % mod;    while (b) {     if (b & 1) ans = (ans * base) % mod;     base = (base * base) % mod;     b /= 2;    }    return ans % mod;   }      struct Edge{    int to;    int next;   };      Edge edge[405];   int head[205], cnt = 0;      void add(int u, int v) {    cnt++;    edge[cnt].to = v;    edge[cnt].next = head[u];    head[u] = cnt;   }      int n, fa[205][25], f[205][205], dep[205];      void dfs(int u, int fath) {    for (int i = head[u]; i; i = edge[i].next) {     int v = edge[i].to;     if (v == fath) continue;     dep[v] = dep[u] + 1;     fa[v][0] = u;     for (int j = 1; j <= 22; j++) {      fa[v][j] = fa[fa[v][j - 1]][j - 1];     }     dfs(v, u);    }   }      int lca(int x, int y) {    if (dep[x] < dep[y]) swap(x, y);    for (int i = 22; i >= 0; i--) {     if (dep[fa[x][i]] >= dep[y]) {      x = fa[x][i];     }    }    if (x == y) return x;    for (int i = 22; i >= 0; i--) {     if (fa[x][i] != fa[y][i]) {      x = fa[x][i]; y = fa[y][i];     }    }    return fa[x][0];   }      signed main() {    cin >> n;    for (int i = 1; i < n; i++) {     int u, v;     cin >> u >> v;     add(u, v); add(v, u);    }    for (int i = 1; i <= n; i++) f[0][i] = 1;    for (int i = 1; i <= n; i++) {     for (int j = 1; j <= n; j++) {      f[i][j] = ((f[i - 1][j] + f[i][j - 1]) % mod * inv % mod) % mod;     }    }    int ans = 0;    for (int rt = 1; rt <= n; rt++) {     memset(dep, 0, sizeof dep);     memset(fa, 0, sizeof fa);     dep[rt] = 1;     dfs(rt, 0);     for (int i = 1; i <= n; i++) {      for (int j = 1; j <= i - 1; j++) {       int LCA = lca(i, j);       ans = (ans % mod + f[dep[i]-dep[LCA]][dep[j]-dep[LCA]] % mod) % mod;      }      }    }    cout << (ans % mod * ksm(n, mod - 2) % mod) % mod;    return 0;   }      