#include <bits/stdc++.h>
using namespace std;
const long long MOD = 998244353;
long long powmod(long long a, long long n) {
  if (n == 0) return 1;
  if (n % 2) return (a * powmod(a, n - 1)) % MOD;
  long long c = powmod(a, n / 2);
  return (c * c) % MOD;
}
long long inv(long long a) { return powmod(a, MOD - 2); }
long long fact[1100000];
long long invfact[1100000];
long long pow3[1100000];
long long ncr(long long n, long long r) {
  if (r < 0 || n < 0) return 0;
  if (n < r) return 0;
  long long a = fact[n];
  a = (a * invfact[r]) % MOD;
  a = (a * invfact[n - r]) % MOD;
  return a;
}
void init() {
  fact[0] = 1;
  invfact[0] = 1;
  long long inv2 = inv(2);
  pow3[0] = 1;
  for (long long i = 1; i < 1100000; i++) {
    fact[i] = (i * fact[i - 1]) % MOD;
    invfact[i] = inv(fact[i]);
    pow3[i] = (pow3[i - 1] * 3) % MOD;
  }
}
int main() {
  cin.sync_with_stdio(0);
  cin.tie(0);
  init();
  long long n;
  cin >> n;
  long long ans = 0;
  for (long long k = 1; k <= n; k++) {
    long long r = ncr(n, k);
    if (k % 2) r = -r;
    long long g = (pow3[k] - 3) * powmod(3, n * (n - k));
    g %= MOD;
    g += 3 * powmod(pow3[n - k] - 1, n);
    g %= MOD;
    ans += (r * g) % MOD;
    ans %= MOD;
  }
  ans += powmod(pow3[n] - 3, n);
  ans = powmod(3, n * n) - ans;
  ans %= MOD;
  if (ans < 0) ans += MOD;
  cout << ans << '\n';
}
