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>
using namespace std;
typedef long long ll;
const int N=2020,P=924844033;
int i,j,k,k1,k2,n,m,nm,ch,Ans;
int ans[N],f[N][N][2][2],Jc[N];
void pre(int n) {
	int i;
	Jc[0]=1;
	for (i=1;i<=n;i++) Jc[i]=(ll) Jc[i-1]*i%P;
}
void Up(int &x,int y) {
	x=(x+y)%P;
}
int main() {
	scanf("%d%d",&n,&m);
	pre(n);
	nm=n/m+1;
	f[0][0][1][0]=1;
	for (i=0;i<=nm;i++)
		for (j=0;j<=i;j++)
			for (k1=0;k1<2;k1++)
				for (k2=0;k2<2;k2++) if (f[i][j][k1][k2]) {
					Up(f[i+1][j][k2][0],f[i][j][k1][k2]);
					if (!k1) Up(f[i+1][j+1][k2][0],f[i][j][k1][k2]);
					Up(f[i+1][j+1][k2][1],f[i][j][k1][k2]);
				}
	ans[0]=1;
	for (i=1;i<=m;i++) {
		int t;
		if (i<=n%m) t=nm;
		else t=nm-1;
		for (j=n;j>=0;j--) if (ans[j]) {
			for (k=1;k<=t;k++) Up(ans[j+k],(ll) ans[j]*(f[t][k][0][0]+f[t][k][1][0])%P);
		}
	}
	for (i=0;i<=n;i++) {
		int t=(ll) Jc[n-i]*ans[i]%P;
		if (i&1) t=(P-t)%P;
		Ans=(Ans+t)%P;
	}
	printf("%d\n",Ans);
}