#include <bits/stdc++.h>
using namespace std;
int fact[1000001];
long long int modPow(long long int n, long long int e) {
  long long int r = 1;
  while (e > 0) {
    if (e & 1) r *= n, r %= 998244353;
    e >>= 1;
    n *= n, n %= 998244353;
  }
  return r;
}
long long int inv(long long int n) { return modPow(n, 998244353 - 2); }
long long int choose(int n, int k) {
  return ((((long long int)fact[n] * inv(fact[k])) % 998244353) *
          inv(fact[n - k])) %
         998244353;
}
int main() {
  int n;
  cin >> n;
  int i;
  fact[0] = 1;
  for (i = 1; i <= n; i++)
    fact[i] = ((long long int)i * fact[i - 1]) % 998244353;
  long long int ans = 0;
  for (i = 1; i <= n; i++) {
    if (i & 1)
      ans += 2 *
             ((((((long long int)modPow(3, (long long int)n * (n - i) + i) *
                  fact[n]) %
                 998244353) *
                inv(fact[i])) %
               998244353) *
              inv(fact[n - i])) %
             998244353;
    else
      ans -= 2 *
             ((((((long long int)modPow(3, (long long int)n * (n - i) + i) *
                  fact[n]) %
                 998244353) *
                inv(fact[i])) %
               998244353) *
              inv(fact[n - i])) %
             998244353;
    ans %= 998244353;
  }
  for (i = 1; i <= n; i++) {
    long long int c = -3 * modPow(-1, i + n) * choose(n, i);
    long long int x = -modPow(3, n - i);
    ans += (c * (modPow(x + 1, n) - modPow(x, n))) % 998244353,
        ans %= 998244353;
  }
  if (ans < 0) ans += 998244353;
  cout << ans << endl;
  return 0;
}
