#include <bits/stdc++.h>
using namespace std;
const long long mod = 998244353;
long long mult(long long a, long long b) {
  return ((a % mod) * (b % mod)) % mod;
}
long long add(long long a, long long b) {
  return ((a % mod) + (b % mod)) % mod;
}
long long sub(long long a, long long b) {
  return ((a % mod) - (b % mod) + mod) % mod;
}
long long fact[2000009], ifact[2000009];
long long power(long long x, long long y) {
  long long res = 1;
  x = x % mod;
  while (y > 0) {
    if (y & 1) res = ((res % mod) * (x % mod)) % mod;
    y = y >> 1;
    x = ((x % mod) * (x % mod)) % mod;
  }
  return res;
}
void pre() {
  fact[0] = ifact[0] = 1;
  for (int i = 1; i <= 200009; ++i) {
    fact[i] = mult(fact[i - 1], i);
    ifact[i] = power(fact[i], mod - 2) % mod;
  }
}
long long ncr(long long n, long long r) {
  return mult(fact[n], mult(ifact[r], ifact[n - r]));
}
int main() {
  pre();
  long long n, k;
  cin >> n >> k;
  if (k >= n) {
    cout << 0 << endl;
    return 0;
  }
  long long ans = 0;
  for (int i = 0; i < n - k; ++i) {
    if (i % 2 == 0) {
      ans += mult(power(n - k - i, n), ncr(n - k, n - k - i));
    } else {
      ans -= mult(power(n - k - i, n), ncr(n - k, n - k - i));
    }
  }
  ans = mult(ans, ncr(n, n - k));
  if (k > 0) ans = mult(2, ans);
  ans = (ans + mod) % mod;
  cout << ans;
  return 0;
  return 0;
}
