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 N=4010;
const int mod=924844033;
int i,j,k,n,m,x,y,t,f[N][N][2],g[N],e[N],en[N],l,b[N],fac[N];
void dfs(int x){
	b[x]=1;e[++l]=x;
	if (x>n){
		if (x-n+k>n)en[l+1]=1;
		else dfs(x-n+k);
	}
	else{
		if (x+n+k>n*2)en[l+1]=1;
		else dfs(x+n+k);
	}
}
int add(int x,int y){x+=y;if (x>=mod)x-=mod;if (x<0)x+=mod;return x;}
int main(){
	scanf("%d%d",&n,&k);
	for (i=1;i<=n;i++){
		if (!b[i])dfs(i);
		if (!b[i+n])dfs(i+n);
	}
	f[1][0][0]=1;
	for (i=2;i<=l;i++)
		for (j=0;j<=n;j++){
			f[i][j][0]=add(f[i][j][0],add(f[i-1][j][0],f[i-1][j][1]));
			if (j&&!en[i])f[i][j][1]=add(f[i][j][1],f[i-1][j-1][0]);
		}
	fac[0]=1;for (i=1;i<=n;i++)fac[i]=1ll*i*fac[i-1]%mod;
	for (i=0;i<=n;i++)g[i]=1ll*add(f[l][i][0],f[l][i][1])*fac[n-i]%mod;
//	for (i=0;i<=n;i++)printf("%d\n",g[i]);
//	for (i=1;i<=l;i++)printf("%d ",e[i]);printf("\n");
//	for (i=1;i<=l;i++)printf("%d ",en[i]);printf("\n");
	int ans=0;
	for (i=0;i<=n;i++)if (i&1)ans=add(ans,-g[i]);else ans=add(ans,g[i]);
	printf("%d\n",ans);
	return 0;
}