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 <iostream>
using namespace std;
const long long cc=924844033;
int n,p;
long long dp[2010][2010],f[2010][2010][2],w[2010][2010];
int main()
{
	cin>>n>>p;
	f[0][0][0]=1;
	w[0][0]=1;
	for (int i=1;i<=(n-1)/p;i++)
	{
		f[i][0][0]=1;
		w[i][0]=1;
	    for (int j=1;j<=((n-1)/p+1)/2;j++)
	    {
	    	f[i][j][0]=(f[i-1][j][0]+f[i-1][j][1])%cc;
	    	f[i][j][1]=f[i-1][j-1][0];
	    	w[i][j]=(f[i][j][0]+f[i][j][1])%cc;
		}
    }
    dp[0][0]=1;
    int m=2*min(n-p,p);
    //int m=2*(((n-1)%p)+1);
    for (int i=1;i<=m;i++)
    {
    	int len=(i+1)/2;
    	for (int j=0;j<=n;j++)
    	{
    		for (int k=0;k<=((n-len)/p+1)/2;k++)
    		 if (j-k>=0)
    		 {
			   long long tmp=(dp[i-1][j-k]*w[(n-len)/p][k])%cc;
			   dp[i][j]=(dp[i][j]+tmp)%cc;
			 }
		}
	}
	long long ans,t=n%2?-1:1;
	ans=(dp[m][n]*t+cc)%cc;
	for (int i=n-1;i>=0;i--)
	{
		t=(t*(n-i))%cc;
		t=(cc-t)%cc;
		long long tmp=(dp[m][i]*t)%cc;
		ans=(ans+tmp)%cc;
	}
	cout<<ans<<endl;
}