func_code_string: #include <bits/stdc++.h>   using namespace std;   template <typename T>   inline void Read(T &x) {     char c = getchar();     bool f = false;     for (x = 0; !isdigit(c); c = getchar()) {       if (c ==  - ) {         f = true;       }     }     for (; isdigit(c); c = getchar()) {       x = x * 10 + c -  0 ;     }     if (f) {       x = -x;     }   }   template <typename T>   inline bool CheckMax(T &a, const T &b) {     return a < b ? a = b, true : false;   }   template <typename T>   inline bool CheckMin(T &a, const T &b) {     return a > b ? a = b, true : false;   }   const int N = 205;   unsigned int ans, mod, c[N][N], f[N][N], s[N][N];   int n, m;   int main() {     Read(n), Read(m), Read(mod);     for (int i = 0; i <= n; ++i) {       c[i][0] = 1;       for (int j = 1; j <= i; ++j) {         c[i][j] = (c[i - 1][j] + c[i - 1][j - 1]) % mod;       }     }     f[1][0] = 1;     for (int i = 0; i <= m; ++i) {       s[1][i] = 1;     }     for (int i = 2; i <= n; ++i) {       for (int j = 1; j < i; ++j) {         for (int k = 0; k < m; ++k) {           f[i][k + 1] = (1LL * s[j][m - 1] * c[i - 2][j - 1] % mod * f[i - j][k] +                          f[i][k + 1]) %                         mod;         }       }       for (int j = 1; j <= m; ++j) {         s[i][j] = (s[i][j - 1] + f[i][j]) % mod;       }     }     for (int i = 0; i < n; ++i) {       for (int j = 0; j <= m; ++j) {         for (int k = 0; j + k <= m; ++k) {           if (k != 1) {             ans = (1LL * f[i + 1][j] * f[n - i][k] + ans) % mod;           }         }       }     }     ans = 2LL * n * (n - 1) * ans % mod;     printf( %u n , ans);     return 0;   }   