func_code_string: #include <bits/stdc++.h>   using namespace std;   const int oo = numeric_limits<int>::max();   const long long M = 998244353, MAXN = 1e6 + 10;   long long n, c[MAXN];   long long mp(long long a, long long e) {     long long ret = 1;     while (e) {       if (e % 2) ret = ret * a % M;       a = a * a % M;       e /= 2;     }     return ret;   }   int main() {     ios_base::sync_with_stdio(false), cin.tie(0);     cin >> n;     c[0] = 1;     for (int i = 0; i < n; i++)       c[i + 1] = c[i] * (n - i) % M * mp(i + 1, M - 2) % M;     long long ans = 0;     for (int i = 1; i <= n; i++) {       long long add = (i + 1) % 2 ? -1 : 1;       add *= c[i];       add = add * mp(3, n * (n - i) + i) % M;       ans = (ans + add) % M;     }     ans = ans * 2 % M;     for (int i = 0; i < n; i++) {       long long add = (i + 1) % 2 ? -1 : 1;       add *= c[i];       long long inner = (mp(1 - mp(3, i), n) - mp(-mp(3, i), n)) % M;       add = 3 * add * inner % M;       ans = (ans + add) % M;     }     while (ans < 0) ans += M;     cout << ans <<   n ;     return 0;   }   