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 mo=924844033;
int n,k,f[2010][2010][2],g[2010],fac[2010],ifac[2010],ans;

int qpow(int a,int b)
{
	int x=a;  a=1;
	while (b)
		{
			if (b&1)  a=1LL*a*x%mo;
			x=1LL*x*x%mo,b>>=1;
		}
	return a;
}

void work()
{
	scanf("%d %d",&n,&k);
	fac[0]=1;
	for (int i=1; i<=n; i++)  fac[i]=1LL*fac[i-1]*i%mo;
	f[0][0][0]=1;
	for (int i=1; i<=n/k+1; i++)
		for (int j=0; j<=(i+1)/2; j++)
			{
				f[i][j][0]=(f[i-1][j][0]+f[i-1][j][1])%mo;
				if (j)  f[i][j][1]=f[i-1][j-1][0];
			}
	g[0]=1;
	for (int i=1,len,s=0; i<=n&&i<=k; i++)
		{
			len=(n-i)/k;
			for (int k=s; k>=0; k--)
				for (int j=1; j<=(len+1)/2; j++)
					g[j+k]=(g[j+k]+1LL*g[k]*(f[len][j][0]+f[len][j][1]))%mo;
			s+=(len+1)/2;
			for (int k=s; k>=0; k--)
				for (int j=1; j<=(len+1)/2; j++)
					g[j+k]=(g[j+k]+1LL*g[k]*(f[len][j][0]+f[len][j][1]))%mo;
			s+=(len+1)/2;
		}
	for (int i=0; i<=n; i++)
		if (i&1)  ans=(ans+mo-1LL*g[i]*fac[n-i]%mo)%mo;
		else  ans=(ans+1LL*g[i]*fac[n-i])%mo;
	printf("%d",ans);
}

int main()
{
	work();
	return 0;
}