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 <cstdio>
#include <cstring>
#include <cstdlib>
#include <algorithm>
#define LL long long
using namespace std;
const LL Maxn = 4010;
const LL Mod = 924844033;
LL n, K;
LL f[2][Maxn][2], l;
bool v[Maxn];
int main() {
	LL i, j, k;
	scanf("%lld%lld", &n, &K);
	l = 0;
	for(i = 1; i <= K; i++){
		l += (n-i)/K+1;
		v[l+1] = true;
	}
	for(i = 1; i <= K; i++){
		l += (n-i)/K+1;
		v[l+1] = true;
	}
	f[0][0][0] = 1;
	LL st = 0;
	for(i = 2; i <= l+1; i++){
		st ^= 1;
		if(v[i]){
			for(j = 0; j <= i; j++){
				f[st][j][0] = (f[st^1][j][0]+f[st^1][j][1])%Mod;
				f[st][j][1] = 0;
			}
		} else {
			for(j = 0; j <= i; j++){
				f[st][j][0] = (f[st^1][j][0]+f[st^1][j][1])%Mod;
				if(j) f[st][j][1] = f[st^1][j-1][0];
			}
		}
	}
	LL jc = 1, ans = 0;
	for(i = n; i >= 0; i--){
		if(i&1) ans = (ans-jc*f[st][i][0]%Mod+Mod)%Mod;
		else ans = (ans+jc*f[st][i][0]%Mod)%Mod;
		jc = jc*(n-i+1)%Mod;
	}
	printf("%lld\n", ans);
	return 0;
}