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;
#define mo 924844033
int n,k;
long long ans;
long long jc[2005],g[2005],h[2005],f[2005][2005][2];
void work() {
	jc[0]=1;
	for(int i=1;i<=n;i++) jc[i]=jc[i-1]*i%mo;
	for(int i=0;i<=n;i++) f[i][0][0]=1;
	for(int i=1;i<=n;i++)
		for(int j=1;j<=n;j++) f[i][j][0]=(f[i-1][j][0]+f[i-1][j][1])%mo,f[i][j][1]=f[i-1][j-1][0];
	g[0]=1;
	for(int i=1;i<=k;i++)
	{
		int sz=(n-i)/k;
		for(int j=n;j>=0;j--)
			for(int l=1;l<=sz;l++) g[j]=(g[j]+g[j-l]*(f[sz][l][0]+f[sz][l][1])%mo)%mo;
		for(int j=n;j>=0;j--)
			for(int l=1;l<=sz;l++) g[j]=(g[j]+g[j-l]*(f[sz][l][0]+f[sz][l][1])%mo)%mo;
	}
	for(int i=0;i<=n;i++) h[i]=jc[n-i]*g[i]%mo,ans=(ans+((i&1)?-h[i]:h[i]))%mo;
	ans=(ans%mo+mo)%mo;
	cout<<ans<<endl;
}
int main()
{
	//freopen("1.in","r",stdin);
	cin>>n>>k;
	work();
	return 0;
}