#include <bits/stdc++.h>
using namespace std;
long long int n, f[2005], k;
int dp[2][4005][4005];
long long int rec(long long int i, long long int j, long long int z) {
  if (i > n) i++;
  if (i > n && i % (2 * k) == 1 % (2 * k)) return j == 0;
  if (i > n) {
    i %= (2 * k);
    if (i == 0) i = 2 * k;
    if (i - k >= 1 && i - k <= n)
      z = 0;
    else
      z = 1;
  }
  if (dp[z][i][j] != -1) return dp[z][i][j];
  long long int an = 0;
  an = (an + rec(i + 2 * k, j, 0)) % 924844033ll;
  if (i + k <= n && j) an = (an + rec(i + 2 * k, j - 1, 1)) % 924844033ll;
  if (z == 0 && j && i - k >= 1 && i - k <= n && i <= n)
    an = (an + rec(i + 2 * k, j - 1, 0)) % 924844033ll;
  return dp[z][i][j] = an;
}
int main() {
  memset(dp, -1, sizeof dp);
  f[0] = 1;
  for (int i = 1; i <= 2000; i++) f[i] = (f[i - 1] * i) % 924844033ll;
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  cin >> n >> k;
  long long int m = 1, ans = 0;
  for (int i = 0; i <= n; i++, m *= -1)
    ans = (ans + f[n - i] * m * rec(1, i, 1) + 924844033ll * 924844033ll) %
          924844033ll;
  cout << ans << '\n';
  return 0;
}
