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 N 2005
using namespace std;
const int mo=924844033;
int n,m,now,f[N],g[N],C[N][N],fc[N];
int main()
{
	int i,j,k,L;
	scanf("%d %d",&n,&m),fc[0]=1;
	for(i=1;i<N;i++)
		fc[i]=(1LL*fc[i-1]*i)%mo;
	for(i=0;i<N;i++){
		C[i][0]=C[i][i]=1;
		for(j=1;j<i;j++)
			C[i][j]=(C[i-1][j-1]+C[i-1][j])%mo;
	  }
	f[0]=1;
	for(i=1;i<=m;i++){
		L=(n-i)/m;
		for(j=0;j<=now;j++) g[j]=f[j],f[j]=0;
		for(j=0;j<=now;j++)
			for(k=0;k<=(L+1)/2;k++)
				f[j+k]=(f[j+k]+1LL*g[j]*C[L-k+1][k])%mo;
		now+=(L+1)/2;
		for(j=0;j<=now;j++) g[j]=f[j],f[j]=0;
		for(j=0;j<=now;j++)
			for(k=0;k<=(L+1)/2;k++)
				f[j+k]=(f[j+k]+1LL*g[j]*C[L-k+1][k])%mo;
		now+=(L+1)/2;
	  }
	for(i=0;i<=n;i++) f[i]=1LL*f[i]*fc[n-i]%mo;
	for(i=n;i>=0;i--)
		for(j=i+1;j<=n;j++)
			f[i]=(f[i]-1LL*f[j]*C[j][i]%mo+mo)%mo;
	cout<<f[0];
	return 0;
}