#include <bits/stdc++.h>
using namespace std;
const long long mod = 1e9 + 7;
long long n, k;
long long pow_mod(long long x, long long y) {
  long long res = 1;
  while (y) {
    if (y & 1) res = res * x % mod;
    x = x * x % mod;
    y >>= 1;
  }
  return res;
}
long long jc[300];
long long ny[300];
int main() {
  jc[0] = ny[0] = 1LL;
  for (int i = 1; i <= 250; i++) {
    jc[i] = 1LL * i * jc[i - 1] % mod;
    ny[i] = ny[i - 1] * pow_mod(1LL * i, mod - 2) % mod;
  }
  cin >> n >> k;
  long long ans = 0;
  for (int i = 0; i <= n; i++) {
    long long tmp = jc[n] * ny[i] % mod * ny[n - i] % mod;
    tmp = tmp * pow_mod(k - 1, n * i) % mod;
    long long t1 = pow_mod(k, n - i);
    long long t2 = pow_mod(k - 1, n - i);
    tmp = tmp * pow_mod((t1 - t2 + mod) % mod, n) % mod;
    if (i & 1) tmp = -tmp;
    ans = (ans + tmp + mod) % mod;
  }
  printf("%lld\n", ans);
  return 0;
}
