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>
#include <cmath>
#include <vector>
#include <algorithm>
#define MOD 924844033LL
using namespace std;
typedef long long ll;

int n,k;

int main(void){
	scanf("%d%d",&n,&k);
	vector<int> cnt(n+1,0);
	cnt[0]=1;
	for(int i=0;i<2*k;i++){
		vector<vector<int> > dp(2,vector<int>(n+1,0));
		if(i<k){
			dp[0]=cnt;
		}else{
			dp[1]=cnt;
		}
		for(int j=i;j<n;j+=2*k){
			vector<vector<int> > nextDp(2,vector<int>(n+1,0));
			for(int a=0;a<2;a++){
				for(int b=0;b<n;b++){
					if(a==1){
						nextDp[1][b+1]+=dp[a][b];
						nextDp[1][b+1]%=MOD;
					}
					if(j+k<n){
						nextDp[0][b+1]+=dp[a][b];
						nextDp[0][b+1]%=MOD;
					}
					nextDp[1][b]+=dp[a][b];
					nextDp[1][b]%=MOD;
				}
			}
			dp.swap(nextDp);
		}
		for(int b=0;b<=n;b++){
			cnt[b]=(dp[0][b]+dp[1][b])%MOD;
		}
	}
	ll tmp=1;
	ll ans=0;

	for(int i=0;i<=n;i++){
		if((n-i)%2==0){
			ans+=tmp*cnt[n-i];
		}else{
			ans-=tmp*cnt[n-i];
		}
		ans%=MOD;
		ans+=MOD;
		ans%=MOD;
		tmp*=i+1;
		tmp%=MOD;
	}
	printf("%lld\n",ans);
	return 0;
}