func_code_string: #include <bits/stdc++.h>   using namespace std;   long long int n;   long long int ppow(long long int i, long long int j) {     if (i >= 998244353) i %= 998244353;     long long int res = 1LL;     while (j) {       if (j & 1LL) {         res *= i;         if (res >= 998244353) res %= 998244353;       }       i *= i;       if (i >= 998244353) i %= 998244353;       j >>= 1LL;     }     return res;   }   long long int k[1000002];   long long int r[1000002];   long long int C(int a, int b) {     long long int up = k[a];     long long int dw = r[a - b] * r[b];     if (dw >= 998244353) dw %= 998244353;     up *= dw;     if (up >= 998244353) up %= 998244353;     return up;   }   long long int p3[1000002];   int main() {     scanf( %lld , &n);     p3[0] = 1;     for (int i = 1; i < 1000002; i++) {       p3[i] = p3[i - 1];       p3[i] *= 3LL;       if (p3[i] >= 998244353) p3[i] %= 998244353;     }     k[0] = 1LL;     for (int i = 1; i < 1000002; i++) {       k[i] = k[i - 1];       k[i] *= (long long int)(i);       if (k[i] >= 998244353) k[i] %= 998244353;     }     r[1000002 - 1] = ppow(k[1000002 - 1], 998244353 - 2);     for (int i = 1000002 - 2; i >= 0; i--) {       r[i] = r[i + 1] * (long long int)(i + 1);       if (r[i] >= 998244353) r[i] %= 998244353;     }     long long int ans = 0;     for (int i = 1; i <= n; i++) {       long long int way = C(n, i) * ppow(3, i);       if (way >= 998244353) way %= 998244353;       way *= ppow(p3[n], n - i);       if (way >= 998244353) way %= 998244353;       if (i & 1) {         ans += way;       } else {         ans += 998244353 - way;       }       if (ans >= 998244353) ans %= 998244353;     }     for (int i = 1; i <= n; i++) {       {         long long int way = 3LL * C(n, i);         if (way >= 998244353) way %= 998244353;         long long int dif_col = ppow(p3[n - i] + 998244353 - 1LL, n);         way *= dif_col;         if (way >= 998244353) way %= 998244353;         if (i & 1) {           ans += way;         } else {           ans += 998244353 - way;         }         if (ans >= 998244353) ans %= 998244353;       }       {         long long int way = ((p3[i] + 998244353 - 3LL) % 998244353) * C(n, i);         if (way >= 998244353) way %= 998244353;         way *= ppow(p3[n - i], n);         if (way >= 998244353) way %= 998244353;         if (i & 1) {           ans += way;         } else {           ans += 998244353 - way;         }         if (ans >= 998244353) ans %= 998244353;       }     }     printf( %lld n , ans);     return 0;   }   