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>
#define neko 4010
#define f(i,a,b) for(register int i=(a);i<=(b);i=-(~i))
const int mod=924844033;
int dp[neko][neko][2],f[neko],ed[neko],fac[neko],cnct[neko][2],n,k,ans,cnt;
int ADD(int x,int y){return (x+=y)>=mod?x-mod:x;}
typedef long long ll;
void solvcoef()
{
	int now;
	f(i,1,n)
	 f(j,0,1)
	 if(!cnct[i][j])
	 {
		 now=0;
		 for(register int x=i,y=j;x<=n;x+=k,y^=1)cnct[x][y]=1,++now;
		 ed[cnt+=now]=1;
	 }
	dp[0][0][0]=1;
	f(i,1,cnt)
	 f(j,0,i)
	 {
		 dp[i][j][0]=ADD(dp[i-1][j][0],dp[i-1][j][1]);
		 if(!ed[i]&&j)dp[i][j][1]=dp[i-1][j-1][0];
	 }
	f(i,0,n)f[i]=ADD(dp[cnt][i][0],dp[cnt][i][1]);
}
int main()
{
	scanf("%d%d",&n,&k);
	fac[0]=1;
	f(i,1,2005)fac[i]=(ll)fac[i-1]*i%mod;
	solvcoef();
	f(i,1,n)ans=ADD(mod,ADD(ans,(ll)(i&1?-1:1)*fac[n-i]%mod*f[i]%mod));
	return printf("%d\n",ADD(ADD(ans,fac[n]),mod)),0;
}