#include <bits/stdc++.h>
using namespace std;
const int MOD = 1000000007;
int mult(int a, int b) {
  int ret = 0;
  while (b) {
    if (b & 1) {
      ret += a;
      if (ret >= MOD) ret -= MOD;
    }
    a <<= 1;
    if (a >= MOD) a -= MOD;
    b >>= 1;
  }
  return ret;
}
int pow(int a, int b) {
  if (a == 0) {
    if (b == 0) return 1;
    return 0;
  }
  int ret = 1;
  while (b) {
    if (b & 1) ret = mult(ret, a);
    a = mult(a, a);
    b >>= 1;
  }
  return ret;
}
int k, memo[1001][1001];
int count(int n, int colors) {
  if (n == 0) return (colors > 0 ? 0 : 1);
  if (colors == 0) return 0;
  int &ret = memo[n][colors];
  if (ret == -1) {
    ret = mult(colors, count(n - 1, colors)) + count(n - 1, colors - 1);
    if (ret >= MOD) ret -= MOD;
  }
  return ret;
}
int fact[2001], fact_inv[2001], inv[2001], comb_k[2001], pow_y[1001];
int main() {
  int n, m;
  scanf("%d %d %d", &n, &m, &k);
  if (m == 1)
    printf("%d\n", pow(k, n));
  else {
    fact[0] = fact[1] = 1;
    fact_inv[0] = fact_inv[1] = 1;
    for (int i = 2; i <= 2 * n; ++i) {
      fact[i] = mult(fact[i - 1], i);
      fact_inv[i] = pow(fact[i], MOD - 2);
    }
    inv[1] = 1;
    for (int i = 2; i <= 2 * n; ++i) inv[i] = pow(i, MOD - 2);
    for (int i = 0; i <= 2 * n && i <= k; ++i) {
      comb_k[i] = 1;
      for (int j = 0; j < i; ++j) {
        comb_k[i] = mult(comb_k[i], k - j);
        comb_k[i] = mult(comb_k[i], inv[1 + j]);
      }
    }
    for (int i = 0; i <= n; ++i) pow_y[i] = pow(i, (m - 2) * n);
    memset(memo, -1, sizeof(memo));
    int ans = 0;
    for (int x = 0; x <= n; ++x) {
      int aux = 0;
      for (int y = 0; y + x <= n && y + 2 * x <= k; ++y) {
        int aux2 = mult(mult(mult(fact[x + y], fact[x + y]),
                             mult(count(n, x + y), count(n, x + y))),
                        pow_y[y]);
        aux2 = mult(aux2, comb_k[2 * x + y]);
        aux2 = mult(aux2, fact[2 * x + y]);
        aux2 = mult(aux2, fact_inv[y]);
        aux += aux2;
        if (aux >= MOD) aux -= MOD;
      }
      aux = mult(aux, fact_inv[x]);
      aux = mult(aux, fact_inv[x]);
      ans += aux;
      if (ans >= MOD) ans -= MOD;
    }
    printf("%d\n", ans);
  }
  return 0;
}
