#include <bits/stdc++.h>
using namespace std;
const int mod = 998244353;
const int maxn = 2e5 + 10;
const int inf = 0x3f3f3f3f;
long long jc[maxn], inv[maxn];
;
long long qpow(long long a, int b) {
  if (a == 0) return 0;
  long long ans = 1;
  while (b) {
    if (b & 1) ans = ans * a % mod;
    a = a * a % mod;
    b >>= 1;
  }
  return ans;
}
long long C(int a, int b) { return jc[a] * inv[b] % mod * inv[a - b] % mod; }
long long cal(long long n, long long m) {
  long long ans = 0;
  for (int k = (0); k <= (m); k++) {
    long long now = C(m, k) * qpow(m - k, n) % mod;
    if (k & 1) {
      ans = (ans - now + mod) % mod;
    } else {
      ans = (ans + now) % mod;
    }
  }
  return ans;
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  long long n, k;
  cin >> n >> k;
  jc[0] = 1;
  for (int i = (1); i <= (n); i++) jc[i] = jc[i - 1] * i % mod;
  for (int i = (0); i <= (n); i++) inv[i] = qpow(jc[i], mod - 2);
  if (k > n - 1) {
    cout << 0 << '\n';
    return 0;
  }
  if (k == 0) {
    cout << jc[n] << '\n';
    return 0;
  }
  long long num = n - k;
  long long ans = C(n, num);
  ans = ans * cal(n, num) % mod;
  ans = ans * 2 % mod;
  cout << ans << '\n';
  return 0;
}
