func_code_string: #include <bits/stdc++.h>   using namespace std;   const int N = 200005;   const int MOD = 998244353;   int fact[N], factinv[N];   int lgcput(int b, int p) {     int a = 1;     while (p) {       if (p & 1) {         a = (1LL * a * b) % MOD;       }       b = (1LL * b * b) % MOD;       p /= 2;     }     return a;   }   int inv(int x) { return lgcput(x, MOD - 2); }   int main() {     int n, k;     cin >> n >> k;     fact[0] = factinv[0] = 1;     for (int i = 1; i <= n; i++) {       fact[i] = (1LL * i * fact[i - 1]) % MOD;       factinv[i] = (1LL * inv(i) * factinv[i - 1]) % MOD;     }     int c = n - k;     if (k >= n) {       cout <<  0 ;       return 0;     }     int ans = 0;     for (int i = 0; i <= c; i++) {       int dead =           (1LL *            ((1LL * ((1LL * fact[c] * factinv[i]) % MOD) * factinv[c - i]) % MOD) *            lgcput(c - i, n)) %           MOD;       if (i & 1)         ans -= dead;       else         ans += dead;       if (ans < 0) ans += MOD;       if (ans >= MOD) ans -= MOD;     }     ans = (1LL * (1LL * (1LL * ans * fact[n] % MOD) * factinv[c] % MOD) *            factinv[n - c]) %           MOD;     if (k == 0) {       cout << ans;       return 0;     }     ans *= 2;     ans %= MOD;     cout << ans;     return 0;   }   