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 ld long double
#define pint pair<int,int>
#define mk(x,y) make_pair(x,y)
#define fir first
#define sec second
#define Rep(x,y,z) for(int x=y;x<=z;++x)
#define Red(x,y,z) for(int x=y;x>=z;--x)
using namespace std;
const int MAXN=2005,Mod=924844033;
inline int read(){
	int p=1,x=0;char ch=getchar();
	while(ch<'0'||ch>'9')ch=='-'?p=-1:0,ch=getchar();
	while(ch>='0'&&ch<='9')x=(x<<3)+(x<<1)+(ch^48),ch=getchar();
	return p*x;
}
int n,k,tot,vis[MAXN<<1],F[MAXN<<1][MAXN][2],Fac[MAXN];
int main(){
//	freopen("std.in","r",stdin);
//	freopen("std.out","w",stdout);
	n=read(),k=read();
	Fac[0]=1;Rep(i,1,n)Fac[i]=1ll*Fac[i-1]*i%Mod;
	Rep(i,1,k)for(int t=1;t<=2;t++)for(int j=i;j<=n;j+=k){
		++tot;if(j!=i)vis[tot]=1;
	}F[0][0][0]=1;
	Rep(i,1,2*n){
		Rep(j,0,n){
			F[i][j][0]=(F[i-1][j][0]+F[i-1][j][1])%Mod;
			if(vis[i]&&j)F[i][j][1]=F[i-1][j-1][0];
		}
	}int Ans=0;
	for(int i=0,t=1;i<=n;i++,t=-t)Ans=(Ans+1ll*t*(F[2*n][i][0]+F[2*n][i][1])*Fac[n-i])%Mod;
	cout<<(Ans+Mod)%Mod;
	return 0;
}