#include <iostream>
#include <vector>
using namespace std;
const int MOD = 998244353;
long long power(long long base, long long exp) {
long long result = 1;
while (exp > 0) {
if (exp % 2 == 1) {
result = (result * base) % MOD;
}
base = (base * base) % MOD;
exp /= 2;
}
return result;
}
void preprocess(int n, vector<long long>& fact, vector<long long>& inv_fact) {
fact[0] = 1;
for (int i = 1; i <= n; ++i) {
fact[i] = (fact[i - 1] * i) % MOD;
}
inv_fact[n] = power(fact[n], MOD - 2);
for (int i = n - 1; i >= 0; --i) {
inv_fact[i] = (inv_fact[i + 1] * (i + 1)) % MOD;
}
}
int main() {
int n, k;
cin >> n >> k;
vector<long long> fact(n + 1), inv_fact(n + 1);
preprocess(n, fact, inv_fact);
long long result = 0;
for (int i = 1; i <= n; ++i) {
long long ik_mod = power(i, k);
long long ik_inv = power(ik_mod, MOD - 2);
long long term = (fact[i] * ik_inv) % MOD;
result = (result + term) % MOD;
}
cout << result << endl;
return 0;
}