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>
const int MaxN=2010,mod=924844033;
int N,K,fa[MaxN*2],siz[MaxN*2],f[MaxN*2][MaxN];
bool ty[MaxN*2];
int find(int i){return fa[i]==i?i:fa[i]=find(fa[i]);}
void mer(int i,int j){siz[j=find(j)]+=siz[i=find(i)];fa[i]=j;}
int main(){
	scanf("%d%d",&N,&K);
	for(int i=0;i<N*2;i++)
		if(i<N-K||i>=N+K)fa[i]=i,siz[i]=1;
	for(int i=0;i<N;i++){
		if(i>=K&&i<N-K)mer(i,i+N);
		if(i+K*2<N)mer(i,i+N+K*2);
	}
	int sz=0;
	ty[0]=1;
	for(int i=0;i<N*2;i++)
		if(fa[i]==i)ty[sz+=siz[i]]=1;
	f[0][0]=1;
	for(int i=0;i<sz;i++)
		for(int j=0;j<=i+1&&j<=N;j++){
			f[i+1][j]=f[i][j];
			if(j){
				if(ty[i])f[i+1][j]+=f[i][j-1];
				else if(i)f[i+1][j]+=f[i-1][j-1];
			}
			f[i+1][j]%=mod;
		}
	int s=0,p=1;
	for(int i=0;i<=N;i++){
		s=(s+1ll*(N-i&1?mod-p:p)*f[sz][N-i])%mod;
		p=p*(i+1ll)%mod;
	}
	printf("%d\n",s);
}