func_code_string: #include <bits/stdc++.h>   using namespace std;   long long mod = 998244353;   long long fast_exp(long long a, long long b) {     if (b <= 0)       return 1;     else {       long long res = 1;       res = fast_exp(a, b / 2);       res = (res * res) % mod;       if (b % 2 == 1) res = (res * a) % mod;       return res;     }   }   long long n, m, k;   long long dp[5001][5010] = {};   long long inv;   int main() {     cin >> n >> m >> k;     dp[0][0] = 1;     for (long long i = 0; i < k; i++) {       for (long long j = 0; j < 5001; j++) {         dp[i + 1][j] = (dp[i + 1][j] + (j)*dp[i][j]) % mod;         dp[i + 1][j + 1] = (dp[i + 1][j + 1] + (n - j) * dp[i][j]) % mod;       }     }     inv = fast_exp(m, mod - 2);     long long num = 0;     long long beg = fast_exp(m, n);     for (long long i = 0; i <= 5001; i++) {       num = (num + beg * dp[k][i]) % mod;       beg = (beg * inv) % mod;     }     long long denom = fast_exp(m, n);     denom = fast_exp(denom, mod - 2);     cout << (num * denom) % mod << endl;     return 0;   }   