#include <bits/stdc++.h>
using namespace std;
const long long MOD = 1000000007;
long long F[1000001] = {1}, T[1001];
long long P(long long n, long long m) {
  long long s = 1;
  for (; m; m >>= 1) {
    if (m & 1) s = s * n % MOD;
    n = n * n % MOD;
  }
  return s;
}
long long D(long long n, long long m) { return n * P(m, MOD - 2) % MOD; }
long long C(long long n, long long m) { return D(F[n], F[n - m] * F[m] % MOD); }
int main() {
  int n, m, s;
  scanf("%d%d%d", &n, &m, &s);
  if (m == 1) return !printf("%I64d\n", P(s, n));
  for (int i = 1; i <= 1000000; i++) F[i] = F[i - 1] * i % MOD;
  long long ans = 0;
  for (int i = 1; i <= n; i++) {
    T[i] = P(i, n);
    for (int j = 0; j < i; j++)
      T[i] = (T[i] - T[j] * C(i, j) % MOD + MOD) % MOD;
  }
  for (int i = 0; i <= n && i <= s; i++) {
    long long sum = 0;
    for (int j = 0; i + j <= n && i + 2 * j <= s; j++)
      sum = (sum + T[i + j] * T[i + j] % MOD * C(s, i) % MOD * C(s - i, j) %
                       MOD * C(s - i - j, j)) %
            MOD;
    ans = (ans + sum * P(i, n * (m - 2))) % MOD;
  }
  printf("%I64d\n", ans);
}
