func_code_string: #include <bits/stdc++.h>   using namespace std;   const unsigned long long hash1 = 201326611;   const double eps = 1e-8;   const long long INF = 0x3f3f3f3f3f3f3f3f;   const int inf = 0x3f3f3f3f;   const long long mod = 1e9 + 7;   const int N = 255;   const int M = 12;   const int dif = 26;   const double PI = acos(-1.0);   inline void Mod(long long& x) {     if (x >= mod) x -= mod;   }   void BinaryBitset(int n) { cout << bitset<sizeof(int) * 4>(n) << endl; }   int n, m;   long long c[N][N], m0[N], m1[N], dp[N][N];   void init(int n) {     m0[0] = m1[0] = 1;     for (int i = 1; i <= n; i++) {       m0[i] = m0[i - 1] * m % mod;       m1[i] = m1[i - 1] * (m - 1) % mod;     }     c[1][0] = 1;     c[1][1] = 1;     c[0][0] = 1;     for (int i = 1; i <= n; i++) c[i][0] = 1, c[i][i] = 1;     for (int i = 2; i <= n; i++) {       for (int j = 1; j < n; j++) {         c[i][j] = (c[i - 1][j - 1] + c[i - 1][j]) % mod;       }     }   }   int main() {     scanf( %d%d , &n, &m);     init(n);     for (int i = 1; i <= n; i++) dp[1][i] = c[n][i] * m1[n - i] % mod;     for (int i = 2; i <= n; i++) {       for (int j = 0; j <= n; j++) {         for (int k = 0; k <= j; k++) {           dp[i][j] = (dp[i][j] + c[n - k][j - k] * dp[i - 1][k] % mod *                                      m1[n - j] % mod * m0[k] % mod) %                      mod;           if (j == k)             dp[i][j] =                 ((dp[i][j] - m1[n] * dp[i - 1][k] % mod + mod) % mod + mod) % mod;         }       }     }     printf( %lld n , dp[n][n]);   }   