#include <bits/stdc++.h>
using namespace std;
const int inf = 0x3f3f3f3f;
const long long mod = 998244353;
const int maxn = 2e5 + 5;
long long fac[maxn];
void init(int x) {
  fac[0] = 1;
  for (int i = 1; i <= x; i++) fac[i] = fac[i - 1] * i % mod;
}
long long qpow(long long a, long long b) {
  long long ans = 1;
  for (; b; a = a * a % mod, b >>= 1)
    if (b & 1) ans = ans * a % mod;
  return ans;
}
long long c(long long n, long long x) {
  return fac[n] * qpow(fac[x], mod - 2) % mod * qpow(fac[n - x], mod - 2) % mod;
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  long long n, k;
  cin >> n >> k;
  init(n);
  if (k >= n) {
    cout << "0\n";
    return 0;
  }
  if (!k) {
    long long ans = 1;
    for (int i = 1; i <= n; i++) ans = ans * i % mod;
    cout << ans << "\n";
    return 0;
  }
  long long ans = 0;
  int flag = 1;
  for (int i = n - k; i >= 0; i--) {
    ans += flag * qpow(i, n) * c(n - k, i);
    if (ans <= 0) ans += (long long)mod * mod;
    ans %= mod;
    flag *= -1;
  }
  ans = ans * c(n, n - k) * 2 % mod;
  cout << ans << "\n";
  return 0;
}
