#include <bits/stdc++.h>
using namespace std;
const int N = 200005;
const int MOD = 998244353;
int fact[N], factinv[N];
int lgcput(int b, int p) {
  int a = 1;
  while (p) {
    if (p & 1) {
      a = (1LL * a * b) % MOD;
    }
    b = (1LL * b * b) % MOD;
    p /= 2;
  }
  return a;
}
int inv(int x) { return lgcput(x, MOD - 2); }
int main() {
  int n, k;
  cin >> n >> k;
  fact[0] = factinv[0] = 1;
  for (int i = 1; i <= n; i++) {
    fact[i] = (1LL * i * fact[i - 1]) % MOD;
    factinv[i] = (1LL * inv(i) * factinv[i - 1]) % MOD;
  }
  int c = n - k;
  if (k >= n) {
    cout << "0";
    return 0;
  }
  int ans = 0;
  for (int i = 0; i <= c; i++) {
    int dead =
        (1LL *
         ((1LL * ((1LL * fact[c] * factinv[i]) % MOD) * factinv[c - i]) % MOD) *
         lgcput(c - i, n)) %
        MOD;
    if (i & 1)
      ans -= dead;
    else
      ans += dead;
    if (ans < 0) ans += MOD;
    if (ans >= MOD) ans -= MOD;
  }
  ans = (1LL * (1LL * (1LL * ans * fact[n] % MOD) * factinv[c] % MOD) *
         factinv[n - c]) %
        MOD;
  if (k == 0) {
    cout << ans;
    return 0;
  }
  ans *= 2;
  ans %= MOD;
  cout << ans;
  return 0;
}
