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 maxn=4e3+10,mod=924844033;
int n,m,k,t,to[maxn],fac[maxn],dp[maxn][maxn>>1][2],p[maxn];
bool vis[maxn];
int main()
{
    int i,j;
    fac[0]=1;
    for(i=1;i<maxn;i++)
        fac[i]=1LL*fac[i-1]*i%mod;
    scanf("%d%d",&n,&k);
    for(i=1;i<=n;i++)
    {
        if(i-k>=1)to[2*(i-k)]=2*i-1;
        if(i+k<=n)to[2*i-1]=2*(i+k);
    }
    int tot=0;
    for(i=1;i<=n<<1;i++)
    {
        if(!vis[i])
        {
            int j=i,cnt=0;
            while(j&&!vis[j])vis[j]=true,j=to[j],cnt++;
            p[++tot]=cnt;
        }
    }
    dp[0][0][0]=1;
    int pos=0;
    for(i=1;i<=tot;i++)
    {
        for(j=1;j<=p[i];j++)
        {
            pos++;
            for(k=0;k<=n;k++)
            {
                dp[pos][k][0]=(0LL+dp[pos-1][k][0]+dp[pos-1][k][1])%mod;
                if(j!=1)dp[pos][k+1][1]=dp[pos-1][k][0];
            }
        }
    }
    int ret=0,delta=1;
    for(i=0;i<=n;i++)
    {
        ret=(ret+1LL*delta*fac[n-i]%mod*(dp[n<<1][i][0]+dp[n<<1][i][1])%mod+mod)%mod;
        delta*=-1;
    }
    printf("%d\n",ret);
    return 0;
}