func_code_string: #include <bits/stdc++.h>   using namespace std;   const int MOD = 1e9 + 7;   const int MAX = 103;   long long dp[MAX][MAX][MAX];   long long tmp[MAX][MAX];   long long ncr[MAX][MAX];   long long res[MAX];   int sub[MAX];   vector<int> adj[MAX];   int modulo(int a, int b, int c) {     long long res = 1;     for (int i = 0; i < b; i++) {       res *= a;       res %= c;     }     return res % c;   }   void merge(int a, int b) {     memset(tmp, 0, sizeof tmp);     for (int i = 0; i < sub[b]; i++) {       for (int j = 1; j <= sub[b]; j++) {         for (int k = 0; k < sub[a]; k++) {           for (int l = 1; l <= sub[a]; l++) {             long long x = dp[b][i][j];             long long y = dp[a][k][l];             tmp[i + k + 1][j + l] += ((x * y) % MOD);             tmp[i + k + 1][j + l] %= MOD;             tmp[i + k][j] += ((((x * y) % MOD) * 1ll * l) % MOD);             tmp[i + k][j] %= MOD;           }         }       }     }     for (int i = 0; i < (sub[a] + sub[b]); i++) {       for (int j = 1; j <= (sub[a] + sub[b]); j++) {         dp[b][i][j] = tmp[i][j];       }     }   }   void dfs(int s, int p) {     dp[s][0][1] = 1;     sub[s] = 1;     for (int i = 0; i < adj[s].size(); i++) {       int u = adj[s][i];       if (u != p) {         dfs(u, s);         merge(u, s);         sub[s] += sub[u];       }     }   }   int main() {     int n;     scanf( %d , &n);     for (int i = 1; i < n; i++) {       int a, b;       scanf( %d %d , &a, &b);       adj[a].push_back(b);       adj[b].push_back(a);     }     dfs(1, 0);     for (int i = 0; i < n - 1; i++) {       for (int j = 1; j <= n; j++) {         dp[1][i][j] = (dp[1][i][j] * 1ll * j) % MOD;         dp[1][i][j] = (dp[1][i][j] * 1ll * modulo(n, n - i - 2, MOD)) % MOD;         res[i] += dp[1][i][j];         res[i] %= MOD;       }     }     res[n - 1] = 1;     ncr[0][0] = 1;     ncr[1][0] = 1;     ncr[1][1] = 1;     for (int i = 2; i <= n; i++) {       ncr[i][0] = 1;       for (int j = 1; j <= i; j++) {         ncr[i][j] = (ncr[i - 1][j - 1] + ncr[i - 1][j]) % MOD;       }     }     for (int i = n - 2; i >= 0; i--) {       for (int j = i + 1; j < n; j++) {         res[i] -= ((ncr[j][i] * res[j]) % MOD);         res[i] += MOD;         res[i] %= MOD;       }     }     for (int i = 0; i < n; i++) {       printf( %lld n , res[i]);     }   }   