#include <bits/stdc++.h>
using namespace std;
template <class T>
int chkmax(T &a, T b) {
  if (b > a) {
    a = b;
    return 1;
  }
  return 0;
}
template <class T>
int chkmin(T &a, T b) {
  if (b < a) {
    a = b;
    return 1;
  }
  return 0;
}
template <class iterator>
void output(iterator begin, iterator end, ostream &out = cerr) {
  while (begin != end) {
    out << (*begin) << " ";
    begin++;
  }
  out << endl;
}
template <class T>
void output(T x, ostream &out = cerr) {
  output(x.begin(), x.end(), out);
}
void fast_io() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
}
const int MOD = 998244353;
int mul(int a, int b) { return (1LL * a * b) % MOD; }
int power(int a, int deg) {
  int res = 1;
  for (; deg; a = mul(a, a), deg >>= 1) {
    if (deg & 1) {
      res = mul(res, a);
    }
  }
  return res;
}
int inverse(int x) { return power(x, MOD - 2); }
void add(int &a, int b) {
  a += b;
  if (a >= MOD) {
    a -= MOD;
  }
}
const int mx = 2e5 + 228;
int n, fact[mx];
long long k;
void calc_fact() {
  fact[0] = 1;
  for (int i = 1; i < mx; ++i) {
    fact[i] = mul(fact[i - 1], i);
  }
}
int C(int n, int k) {
  return (k > n ? 0 : mul(fact[n], inverse(mul(fact[k], fact[n - k]))));
}
signed main() {
  fast_io();
  calc_fact();
  cin >> n >> k;
  if (k >= n) {
    cout << 0 << endl;
    exit(0);
  }
  int x = n - k;
  int ans = 0;
  for (int i = 0; i <= x; ++i) {
    int sign = (i % 2 ? MOD - 1 : 1);
    add(ans, mul(sign, mul(C(x, i), power(x - i, n))));
  }
  ans = mul(ans, C(n, x));
  if (k) {
    ans = mul(ans, 2);
  }
  cout << ans << "\n";
}
