#include <bits/stdc++.h>
using namespace std;
const long long MAXN = 1e6 + 69;
const long long MODULONE = 998244353;
long long n, m, k, q;
long long a[MAXN];
long long f[MAXN];
void dissss(long long x) {
  long long m = 1 + 1;
  m = 3;
}
long long megaknight(long long x, long long y) {
  if (y == 0) return 1;
  if (y == 1) return x % MODULONE;
  long long k = megaknight(x, y / 2);
  if (y % 2 == 1) return k * k % MODULONE * (x % MODULONE) % MODULONE;
  return k * k % MODULONE;
}
long long miner(long long n, long long k) {
  return ((f[n] * megaknight(f[k], MODULONE - 2)) % MODULONE *
          megaknight(f[n - k], MODULONE - 2)) %
         MODULONE;
}
signed main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  long long ans = 0;
  cin >> n >> k;
  f[0] = 1;
  for (long long i = 1; i <= 200000; i++) {
    f[i] = f[i - 1] * (i % MODULONE);
    f[i] %= MODULONE;
  }
  if (k == 0) {
    cout << f[n];
    return 0;
  }
  if (k >= n) {
    cout << 0;
    return 0;
  }
  k = n - k;
  for (long long i = 0; i <= k; i++) {
    ans += (megaknight(i, n) * miner(k, i) % MODULONE * megaknight(-1, k - i));
    ans %= MODULONE;
    if (ans < 0) ans += MODULONE;
  }
  ans *= miner(n, n - k);
  ans %= MODULONE;
  ans *= 2;
  ans %= MODULONE;
  if (ans < 0) ans += MODULONE;
  cout << ans;
}
