#include <bits/stdc++.h>
using namespace std;
const long long mod = 998244353;
long long i, ans, fac[1000005], invfac[1000005], inv3[1000005], pow3[1000005],
    n;
long long pow(long long a, long long b) {
  long long ans = 1;
  while (b) {
    if (b & 1) ans = ans * a % mod;
    a = a * a % mod;
    b >>= 1;
  }
  return ans;
}
long long C(long long a, long long b) {
  return fac[a] * invfac[b] % mod * invfac[a - b] % mod;
}
long long neg(long long a) { return a % 2 ? -1 : 1; }
int main() {
  scanf("%I64d", &n);
  fac[0] = 1;
  pow3[0] = 1;
  for (i = 1; i <= n; i++)
    fac[i] = fac[i - 1] * i % mod, pow3[i] = pow3[i - 1] * 3 % mod;
  invfac[n] = pow(fac[n], mod - 2);
  inv3[n] = pow(pow3[n], mod - 2);
  for (i = n - 1; i >= 0; i--)
    invfac[i] = invfac[i + 1] * (i + 1) % mod, inv3[i] = inv3[i + 1] * 3 % mod;
  for (i = 0; i < n; i++)
    ans = ((ans + C(n, i) * neg(i + 1) *
                      ((pow((1 - pow3[i] + mod) % mod, n) -
                        neg(n) * pow(pow3[n], i) + mod) %
                       mod) %
                      mod) %
               mod +
           mod) %
          mod;
  ans = ans * 3 % mod;
  ans = (ans +
         2 * pow(pow3[n], n) % mod * neg(1 - n) *
             ((pow((inv3[n - 1] - 1 + mod) % mod, n) - neg(n) + mod) % mod) %
             mod +
         mod) %
        mod;
  printf("%I64d", ans);
  return 0;
}
