#include <bits/stdc++.h>
using namespace std;
int n, k;
long long ans;
long long jc[2005], g[2005], h[2005], f[2005][2005][2];
void work() {
  jc[0] = 1;
  for (int i = 1; i <= n; i++) jc[i] = jc[i - 1] * i % 924844033;
  for (int i = 0; i <= n; i++) f[i][0][0] = 1;
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= n; j++)
      f[i][j][0] = (f[i - 1][j][0] + f[i - 1][j][1]) % 924844033,
      f[i][j][1] = f[i - 1][j - 1][0];
  g[0] = 1;
  for (int i = 1; i <= k; i++) {
    int sz = (n - i) / k;
    for (int j = n; j >= 0; j--)
      for (int l = 1; l <= j; l++)
        g[j] = (g[j] + g[j - l] * (f[sz][l][0] + f[sz][l][1]) % 924844033) %
               924844033;
    for (int j = n; j >= 0; j--)
      for (int l = 1; l <= j; l++)
        g[j] = (g[j] + g[j - l] * (f[sz][l][0] + f[sz][l][1]) % 924844033) %
               924844033;
  }
  for (int i = 0; i <= n; i++)
    h[i] = jc[n - i] * g[i] % 924844033,
    ans = (ans + ((i & 1) ? -h[i] : h[i])) % 924844033;
  ans = (ans % 924844033 + 924844033) % 924844033;
  cout << ans << endl;
}
int main() {
  cin >> n >> k;
  work();
  return 0;
}
