#include using namespace std; using ll = long long; const ll MOD = 998244353; ll modpow(ll a, ll e) { ll r = 1; while (e > 0) { if (e & 1) r = r * a % MOD; a = a * a % MOD; e >>= 1; } return r; } ll solve_formula(ll N) { ll ans = 1; ans = ans * (N % MOD) % MOD; ans = ans * ((N - 1) % MOD) % MOD; ans = ans * ((N - 2) % MOD) % MOD; ans = ans * ((N - 3) % MOD) % MOD; // divide by 4! = 24 ans = ans * modpow(24, MOD - 2) % MOD; ans = ans * modpow(26, N - 4) % MOD; return ans; } ll count_mole_subseq(const string& s) { // dp[t] := target の先頭 t 文字を作る部分列の個数 string target = "mole"; vector dp(5, 0); dp[0] = 1; for (char c : s) { for (int i = 3; i >= 0; i--) { if (target[i] == c) { dp[i + 1] += dp[i]; } } } return dp[4]; } ll solve_bruteforce(int N) { string s(N, 'a'); ll ans = 0; auto dfs = [&](auto self, int pos) -> void { if (pos == N) { ans += count_mole_subseq(s); ans %= MOD; return; } for (char c = 'a'; c <= 'z'; c++) { s[pos] = c; self(self, pos + 1); } }; dfs(dfs, 0); return ans; } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); ll N; cin >> N; // 入力制約バリデーション assert(4 <= N && N <= 200000); ll ans; if (N <= 5) { // バリデーション用の愚直解 ans = solve_bruteforce((int)N); } else { // 本解 ans = solve_formula(N); } cout << ans << '\n'; return 0; }