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;

typedef long long s64;
#define rep(i,l,r) for(int i=l;i<=r;++i)
#define per(i,r,l) for(int i=r;i>=l;--i)
const int N=2000+5,D=924844033;
s64 dp[N][N][2];int mj[N];
s64 f[N],nf[N],jie[N];
void trans(int n,int m)
{
	per(i,n,0)
	{
		s64 ans=f[i]*nf[0]%D;
		int j=min(i,m);
		while(j)
		{
			(ans+=f[i-j]*nf[j])%=D;
			--j;
		}
		f[i]=ans;
	}
}

int main()
{
	//freopen("1.in","r",stdin);
	int n,k;
	cin>>n>>k;
	rep(i,1,n)
	{
		if(i<=2*k)
		{
			mj[i]=1;
			dp[i][0][0]=1;
			dp[i][1][0]=i-k>=1;
			dp[i][1][1]=i+k<=n;
		}
		else
		{
			int i0=i-2*k;
			mj[i]=mj[i0]+1;
			rep(j,0,mj[i])dp[i][j][0]=(dp[i0][j][0]+dp[i0][j][1])%D;
			rep(j,1,mj[i])(dp[i][j][0]+=dp[i0][j-1][0])%=D;
			if(i+k<=n)rep(j,1,mj[i])dp[i][j][1]=(dp[i0][j-1][0]+dp[i0][j-1][1])%D;
		}
	}
	f[0]=1;
	rep(i,max(1,n-2*k+1),n)
	{
		int m=mj[i];
		rep(j,0,m)nf[j]=(dp[i][j][0]+dp[i][j][1])%D;
		trans(n,m);
	}
	jie[0]=1;
	rep(i,1,n)jie[i]=jie[i-1]*i%D;
	s64 ans=0;
	rep(i,0,n)(ans+=(i%2?-1:1)*jie[n-i]*f[i])%=D;
	cout<<(ans%D+D)%D;
}