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 mod=924844033;
const int N=2010;
int sz,dp[N],f[2][N][2][2],T,jc[N];
typedef long long ll;
inline void reduce(int&x){x+=x>>31&mod;}
void init(){
	jc[0]=1;
	for(int i=1;i<N;++i)jc[i]=(ll)jc[i-1]*i%mod;
}
int last_n=-1;
void calc(int n){
	if(n!=last_n){
		memset(f,0,sizeof f);
		f[0][0][1][0]=1;T=0;
		for(int i=1;i<=n;++i){
			T^=1;memset(f[T],0,sizeof f[T]);
			for(int j=0;j<i;++j)
				for(int k=0;k<2;++k)
					for(int l=0;l<2;++l)if(f[!T][j][k][l]){
						int v=f[!T][j][k][l];
						reduce(f[T][j][l][0]+=v-mod);
						reduce(f[T][j+1][l][1]+=v-mod);
						if(!k)reduce(f[T][j+1][l][0]+=v-mod);
					}
		}
		last_n=n;
	}
	for(int i=sz+n;i>=0;--i){
		int v=0;
		for(int j=0;j<=i&&j<=n;++j)
			v=(v+(ll)dp[i-j]*(f[T][j][0][0]+f[T][j][1][0]))%mod;
		dp[i]=v;
	}
	sz+=n;
}

int main(){
	ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
	int n,K;cin>>n>>K;init();
	dp[0]=1;sz=0;
	for(int i=1;i<=K;++i)calc((n-i)/K+1);
	int ans=0;
	for(int i=0;i<=n;++i){
		int v=(ll)dp[i]*jc[n-i]%mod;
		if(i&1)reduce(ans-=v);
		else reduce(ans+=v-mod);
	}
	cout<<ans<<endl;
	return 0;
}