Problem: Snuke loves permutations. He is making a permutation of length N.

Since he hates the integer K, his permutation will satisfy the following:

* Let the permutation be a_1, a_2, ..., a_N. For each i = 1,2,...,N, |a_i - i| \neq K.



Among the N! permutations of length N, how many satisfies this condition?

Since the answer may be extremely large, find the answer modulo 924844033(prime).

Constraints

* 2 ≦ N ≦ 2000
* 1 ≦ K ≦ N-1

Input

The input is given from Standard Input in the following format:


N K


Output

Print the answer modulo 924844033.

Examples

Input

3 1


Output

2


Input

4 1


Output

5


Input

4 2


Output

9


Input

4 3


Output

14


Input

425 48


Output

756765083

Solution (in CPP):

Solution:
#if 0
date +%Y.%m.%d

题解先咕着。
#endif
#include <cstdio>
#define debug(...) fprintf(stderr, __VA_ARGS__)

typedef long long lolong;

inline int input() { int x; scanf("%d", &x); return x; }

const int maxn = 2020, mod = 924844033;

bool real[maxn << 1];
int f[maxn << 1][maxn];
lolong fac[maxn];

int main() {
	int n = input(), k = input();

	int p = 0;
	for(int i = 1; i <= k; i ++)
		for(int t = 0; t < 2; t ++)
			for(int j = i; j <= n; j += k)
				real[++ p] = j > i;

	/* for(int i = 1; i <= n * 2; i ++) */
	/* 	debug(" %d", real[i]); */
	/* debug("\n"); */

	f[0][0] = 1;
	for(int i = 1; i <= p; i ++) {
		for(int j = 0; j <= n; j ++)
			f[i][j] = f[i - 1][j];
		if(real[i])
			for(int j = 1; j <= n; j ++)
				(f[i][j] += f[i - 2][j - 1]) %= mod;
	}

	/* for(int i = 0; i <= n; i ++) */
	/* 	debug(" %d", f[n << 1][i]); */
	/* debug("\n"); */

	fac[0] = 1;
	for(int i = 1; i <= n; i ++)
		fac[i] = fac[i - 1] * i % mod;

	lolong ans = 0;
	for(int i = 0; i <= n; i ++)
		ans += fac[n - i] * f[n << 1][i] % mod * ((i & 1) ? -1 : 1);
	((ans %= mod) += mod) %= mod;

	printf("%lld\n", ans);
}