#include<iostream>
#include<cstring>
#include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<cmath>
#define mo  924844033
using namespace std;
typedef long long ll;
int n,k;
ll dp[2][2009][2][2],bin[2009];
int main()
{
  scanf("%d%d",&n,&k);
  dp[0][0][1][0]=1ll;
  int las=0,now=0;
  bin[0]=1;
  for (int i=1;i<=n;i++) bin[i]=bin[i-1]*(ll)i%mo;
  for (int t=1;t<=k;t++)
  {
    for (int i=t;i<=n;i+=k)
    {   
      las=now;now=now^1;
      for (int j=0;j<=n;j++)
      for (int x=0;x<=1;x++)
      for (int y=0;y<=1;y++)
      dp[now][j][x][y]=0;
    
      for (int j=0;j<=n;j++)
      for (int x=0;x<=1;x++)
      for (int y=0;y<=1;y++)
  	  {
  	    if (dp[las][j][x][y]==0) continue;
	    int val=dp[las][j][x][y];
	    if (i+k>n)
	    {
	       dp[now][j][1][0]=(dp[now][j][1][0]+val)%mo;
		   if (x==0) dp[now][j+1][1][0]=(dp[now][j+1][1][0]+val)%mo;  
		}
		else 
		{
	      dp[now][j][y][0]=(dp[now][j][y][0]+val)%mo; 
	      if (x==0) dp[now][j+1][y][0]=(dp[now][j+1][y][0]+val)%mo;
	      dp[now][j+1][y][1]=(dp[now][j+1][y][1]+val)%mo;
	    }
      }
    }
  }
  ll ans=0;
  for (int i=0;i<=n;i++)
  {
  	ll sum=0;
  	for (int x=0;x<=1;x++)
  	for (int y=0;y<=1;y++)
  	sum=(sum+dp[now][i][x][y])%mo;
  	sum=(bin[n-i]*sum)%mo;
  	if (i%2==0) ans=(ans+sum)%mo;
  	else ans=(ans-sum)%mo;
  }
  ans=(ans+mo)%mo;
  printf("%lld\n",ans);
  return 0;
}