#include <bits/stdc++.h>
using namespace std;
#define fo(i,a,b) for (int i = (a); i < (b); i++)
#define MOD 1000000007LL
#define N 2002
typedef long long ll;

int n, k;
ll dp[N][N], fct[N*N], inv[N*N], ifct[N*N];
int main() {
	scanf("%d %d", &n, &k);
	if (k==1) puts("1"), exit(0);
	fct[0] = 1;
	fo(i,1,N*N) fct[i] = (i * fct[i-1])%MOD;
	inv[1] = 1;
	fo(i,2,N*N) inv[i] = (-(MOD/i) * inv[MOD % i]) % MOD + MOD;
	ifct[0] = 1;
	fo(i,1,N*N) ifct[i] = (inv[i] * ifct[i-1])%MOD;
	dp[0][0] = 1;
	fo(i,0,n+1) fo(j,0,i+1) {
		dp[i+1][j] = (dp[i+1][j] + dp[i][j])%MOD;
		if (j < i) {
			int lft = n-i + (k-1)*(n - j - 1);
			dp[i][j+1] = (dp[i][j+1] + fct[lft + k-2] * (ifct[lft] * (ifct[k-2] * dp[i][j] % MOD)%MOD))%MOD;
		}
	}
	ll ans = (dp[n][n] * fct[n])%MOD;
	printf("%lld\n", ans);

	return 0;
}