#include <bits/stdc++.h>
using namespace std;
const long long N = 1e6 + 5, MOD = 1e9 + 7, MAXN = 1e5, LG = 20, M = 1e7,
                P = 727, Sq = 100;
const long long inf = 1e18 + 10;
long long fac[N], inv[N], dp[1012][1012], ans = 0;
long long pw(long long a, long long b) {
  if (!b) return 1;
  long long tmp = pw(a, b / 2);
  tmp = 1ll * tmp * tmp % MOD;
  if (b % 2) tmp = 1ll * tmp * a % MOD;
  return tmp;
}
long long ENT(long long a, long long b) {
  if (a > b) return 0;
  if (a == b || !a) return 1;
  long long ret = 1ll * fac[b] * inv[a] % MOD;
  ret = 1ll * ret * inv[b - a] % MOD;
  return ret;
}
int32_t main() {
  fac[0] = 1;
  for (long long i = 1; i < N; i++) fac[i] = 1ll * fac[i - 1] * i % MOD;
  inv[N - 1] = pw(fac[N - 1], MOD - 2);
  for (long long i = N - 2; i >= 1; i--)
    inv[i] = 1ll * inv[i + 1] * (i + 1) % MOD;
  long long n, m, k;
  cin >> n >> m >> k;
  dp[0][0] = 1;
  for (long long i = 1; i <= n; i++)
    for (long long j = 1; j <= i; j++)
      dp[i][j] = (dp[i - 1][j - 1] + dp[i - 1][j]) % MOD * j % MOD;
  if (m == 1) return cout << pw(k, n), 0;
  for (long long i = 1; i <= min(k, n); i++)
    for (long long j = 0; j <= i; j++)
      ans = (ans + 1ll * dp[n][i] * dp[n][i] % MOD * pw(j, n * (m - 2)) % MOD *
                       ENT(i, k) % MOD * ENT(i - j, k - i) % MOD * ENT(j, i) %
                       MOD) %
            MOD;
  return cout << ans, 0;
}
