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 mn 2022
#define mod 924844033
using namespace std;
int i,j,k,l,r,t,n,m,s,f[mn][mn][4],g[mn],h[mn],fac[mn];
int main()
{
    scanf("%d%d",&n,&m);
    fac[0]=1;
    for (i=1;i<=n;i++) fac[i]=1ll*fac[i-1]*i%mod;
    f[1][0][0]=f[1][1][2]=1;
    for (i=1;i<n;i++)
    for (j=0;j<=i;j++)
    for (k=0;k<=3;k++)
    if (f[i][j][k])
	{
        (f[i+1][j][k>>1]+=f[i][j][k])%=mod;
        if (!(k&1)) (f[i+1][j+1][k>>1]+=f[i][j][k])%=mod;
        (f[i+1][j+1][(k>>1)+2]+=f[i][j][k])%=mod;
    }
    g[0]=1;
    for (r=1;r<=m;r++)
	{
        l=1; t=r;
        while (t+m<=n) {l++; t+=m;}
        for (i=0;i<=n;i++) h[i]=0;
        for (i=0;i<=n;i++) for (j=0;j<=l;j++) for (k=0;k<=1;k++) if (i+j<=n) (h[i+j]+=1ll*g[i]*f[l][j][k]%mod)%=mod;
        for (i=0;i<=n;i++) g[i]=h[i];
    }
    for (i=0;i<=n;i++)
	{
        t=1ll*g[i]*fac[n-i]%mod;
        if (i&1) (s-=t)%=mod; else (s+=t)%=mod;
    }
    printf("%d\n",(s+=mod)%=mod);

}