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>
#define ll long long
#define mod 924844033
#define N 2009
#define ad(x,y) (x=(x+(y))%mod)
using namespace std;
 
int n,m,a[N],bin[N],fac[N],f[N][2],dp[N][N],g[N][N];
int main(){
	scanf("%d%d",&n,&m);
	int i,j,k,x,y;
	for (i=bin[0]=1; i<=n; i++) bin[i]=(bin[i-1]<<1)%mod;
	for (i=fac[0]=1; i<=n; i++) fac[i]=(ll)fac[i-1]*i%mod;
	for (i=1; i<=n && i<=(m<<1); i++){
		a[i]=(n-i)/(m<<1)+1;
		memset(f,0,sizeof(f));
		f[0][i-m<=0]=1;
		for (j=1; j<=a[i]; j++)
			for (k=a[i]+1; k>=0; k--){
				ad(f[k][0],f[k][1]); f[k][1]=0;
				if (k) for (x=0; x<2; x++)
					for (y=0; y<=x; y++) ad(f[k][x],f[k-1][y]);
			}
		x=i+(a[i]-1)*(m<<1);
		for (j=0; j<=a[i]+1; j++){
			dp[i][j]=f[j][0];
			if (x+m<=n) ad(dp[i][j],f[j][1]);
		}
	}
	g[0][0]=1;
	for (i=1; i<=n && i<=(m<<1); i++)
		for (j=0; j<=n; j++)
			for (k=0; k<=j && k<=a[i]+1; k++)
				ad(g[i][j],(ll)g[i-1][j-k]*dp[i][k]);
	int ans=0; x=min(n,m<<1);
	for (i=0; i<=n; i++)
		if (i&1) ans=(ans-(ll)g[x][i]*fac[n-i]%mod+mod)%mod;
		else ad(ans,(ll)g[x][i]*fac[n-i]);
	printf("%d\n",ans);
	return 0;
}