func_code_string: #include <bits/stdc++.h>   using namespace std;   const int N = 113;   int add(int x, int y) {     x += y;     if (x >= 1000000007) x -= 1000000007;     return x;   }   int sub(int x, int y) {     if (x < y) x += 1000000007;     x -= y;     return x;   }   int mul(int x, int y) { return (long long)x * y % 1000000007; }   int qpow(int x, int y, int p = 1000000007) {     int res = 1;     while (y) {       if (y & 1) res = mul(res, x);       x = mul(x, x);       y >>= 1;     }     return res;   }   vector<int> G[N];   int f[N][N][N], g[N], h[N], d[N][N], sz[N];   void dfs(int x, int fa) {     f[x][1][0] = 1;     sz[x] = 1;     for (int j = 0; j < G[x].size(); j++)       if (G[x][j] != fa) {         int v = G[x][j];         dfs(v, x);         memset(d, 0, sizeof d);         for (int xsz = sz[x]; xsz >= 1; xsz--) {           for (int xedges = sz[x]; xedges >= 0; xedges--) {             if (f[x][xsz][xedges]) {               for (int sonedges = sz[v]; sonedges >= 0; sonedges--) {                 for (int sonsz = sz[v]; sonsz >= 1; sonsz--)                   if (f[v][sonsz][sonedges]) {                     d[xsz][xedges + sonedges] =                         add(d[xsz][xedges + sonedges],                             mul(f[x][xsz][xedges], f[v][sonsz][sonedges]));                     d[xsz + sonsz][xedges + sonedges + 1] =                         add(d[xsz + sonsz][xedges + sonedges + 1],                             mul(mul(f[x][xsz][xedges], f[v][sonsz][sonedges]),                                 mul(qpow(mul(xsz, sonsz), 1000000007 - 2),                                     xsz + sonsz)));                   }               }             }           }         }         memcpy(f[x], d, sizeof f[x]);         sz[x] += sz[v];       }   }   int n;   int binom[N][N];   int main() {     binom[0][0] = 1;     for (int i = 1; i < N; i++) {       binom[i][0] = 1;       for (int j = 1; j <= i; j++) {         binom[i][j] = add(binom[i - 1][j], binom[i - 1][j - 1]);       }     }     scanf( %d , &n);     for (int i = 1; i < n; i++) {       int u, v;       scanf( %d%d , &u, &v);       G[u].push_back(v);       G[v].push_back(u);     }     dfs(1, 0);     for (int num = 0; num < n; num++) {       for (int sz = 1; sz <= n; sz++) {         g[num] = add(g[num], f[1][sz][num]);       }       g[num] = mul(g[num], qpow(n, 1000000007 - 1 + n - num - 2));     }     for (int num = n - 1; num >= 0; num--) {       for (int _num = num; _num < n; _num++) {         h[num] = add(h[num], (_num - num) & 1                                  ? 1000000007 - mul(binom[_num][num], g[_num])                                  : mul(binom[_num][num], g[_num]));       }     }     for (int i = 0; i < n; i++) printf( %d  , h[i]);     return 0;   }   