#include <bits/stdc++.h>   using namespace std;   const int N = 2000005;   const int P = 998244353;   long long n;   long long f[N], g[N];   long long a[N];   long long inv_9, inv_6, inv_1;   long long ans;   long long exp_3[N];   long long fac[N], c_n[N];   inline long long ksm(long long base, long long x) {     long long res = 1;     while (x) {       if (x & 1) res *= base, res %= P;       base *= base, base %= P;       x >>= 1;     }     return res;   }   void work() {     int type;     for (int i = 0; i < n; i++) {       if ((n - i) % 2 == 0)         type = 1;       else         type = P - 1;       ans +=           ((c_n[i]) *            (((type) *              ((P + ksm((exp_3[i] - 1 + P) % P, n) - ksm(exp_3[i], n)) % P) % P)) %            P),           ans %= P;     }     ans *= 3, ans %= P;     ans = P - ans, ans %= P;     for (int i = 1; i <= n; i++) {       if (i & 1)         type = 1;       else         type = P - 1;       ans +=           ((2) *            (((type) * (((c_n[i]) * (ksm(3, n * n - i * (n - 1))) % P)) % P)) % P),           ans %= P;     }   }   void init() {     scanf( %lld , &n);     a[2 * n] = ksm(3, 2 * n);     a[n] = ((P - 2) * ksm(3, n)) % P;     a[0] = 1;     exp_3[0] = 1;     for (int i = 1; i <= n; i++) exp_3[i] = ((3) * (exp_3[i - 1]) % P);     fac[0] = 1;     for (int i = 1; i <= n; i++) fac[i] = ((i) * (fac[i - 1]) % P);     for (int i = 0; i <= n; i++)       c_n[i] = ((fac[n]) *                 (((ksm(fac[i], P - 2)) * (ksm(fac[n - i], P - 2)) % P)) % P);     work();     printf( %lld n , ans);   }   int main(int argc, char** argv) {     init();     return 0;   }   