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:
#include <bits/stdc++.h>
using namespace std;

const int
	MAX = 5005,
	MOD = 924844033;
int n, m, l, a[MAX], f[MAX], dp[MAX][MAX];

void add(int &x, int y) {
	x += y;
	x %= MOD;
}

int main() {
	scanf("%d%d", &n, &m);

	int l = 0, it = 0;
	for(int i = 1; i <= m; i++) {
		it++;
		for(int j = 1; j <= (n - i) / m; j++) {
			a[++l] = it;
		}

		it++;
		for(int j = 1; j <= (n - i) / m; j++) {
			a[++l] = it;
		}
	}

	dp[0][0] = 1;

	for(int i = 1; i <= l; i++) {
		int head = (a[i] != a[i - 1]);

		for(int j = 0; j <= n; j++) {
			if(head) {
				if(j > 0)
					add(dp[i][j], dp[i - 1][j - 1]);

				add(dp[i][j], dp[i - 1][j]);
			}

			else {
				if(i > 1 && j > 0)
					add(dp[i][j], dp[i - 2][j - 1]);

				add(dp[i][j], dp[i - 1][j]);
			}
		}
	}

	f[0] = 1;
	for(int i = 1; i <= n; i++)
		f[i] = 1LL * f[i - 1] * i % MOD;

	int ans = 0;
	for(int i = 0; i <= n; i++) {
		int v = 1LL * f[n - i] * dp[l][i] % MOD;

		if(i % 2 == 0) {
			add(ans, v);
		}

		else add(ans, MOD - v);
	}

	printf("%d\n", ans);
	return 0;
}