#include <bits/stdc++.h>
using namespace std;
const int MOD = 1000000007;
const int MAXN = 1000000;
int one[1001][1001];
int p[MAXN + 1];
int pinv[MAXN + 1];
void addmod(int &a, int b) { a = (a + b) % MOD; }
void mulmod(int &a, int b) { a = (long long)a * b % MOD; }
int C(int n, int m) {
  return (long long)p[n] * pinv[m] % MOD * (long long)pinv[n - m] % MOD;
}
int powmod(int a, int b) {
  int ret = 1;
  while (b) {
    if (b & 1) ret = (long long)ret * a % MOD;
    a = (long long)a * a % MOD;
    b >>= 1;
  }
  return ret;
}
void initpow() {
  p[0] = 1;
  for (int i = 1; i <= MAXN; ++i) p[i] = (long long)p[i - 1] * i % MOD;
  pinv[0] = 1;
  for (int i = 1; i <= MAXN; ++i)
    pinv[i] = (long long)pinv[i - 1] * powmod(i, MOD - 2) % MOD;
}
void initone() {
  one[1][1] = 1;
  for (int i = 1; i < 1000; ++i) {
    for (int j = 1; j <= i; ++j) {
      addmod(one[i + 1][j], (long long)one[i][j] * j % MOD);
      addmod(one[i + 1][j + 1], one[i][j]);
    }
  }
  for (int i = 1; i <= 1000; ++i) {
    for (int j = 1; j <= i; ++j) {
      one[i][j] = (long long)one[i][j] * p[j] % MOD;
    }
  }
}
int main() {
  initpow();
  initone();
  int n, m, k;
  scanf("%d%d%d", &n, &m, &k);
  int ret = 0;
  if (m == 1) {
    for (int i = 1; i <= min(n, k); ++i) {
      addmod(ret, (long long)one[n][i] * C(k, i) % MOD);
    }
  } else if (m == 2) {
    for (int i = 0; i <= n; ++i) {
      for (int j = 0; j <= n - i; ++j) {
        if (i + j == 0) continue;
        if (i + 2 * j > k) break;
        int val = C(k, i + 2 * j);
        mulmod(val, C(i + 2 * j, i));
        mulmod(val, C(2 * j, j));
        mulmod(val, one[n][i + j]);
        mulmod(val, one[n][i + j]);
        addmod(ret, val);
      }
    }
  } else {
    for (int i = 1; i <= n; ++i) {
      for (int j = 0; j <= n - i; ++j) {
        if (i + 2 * j > k) break;
        int val = C(k, i + 2 * j);
        mulmod(val, C(i + 2 * j, i));
        mulmod(val, C(2 * j, j));
        mulmod(val, one[n][i + j]);
        mulmod(val, one[n][i + j]);
        mulmod(val, powmod(powmod(i, n), m - 2));
        addmod(ret, val);
      }
    }
  }
  printf("%d\n", ret);
  return 0;
}
