#include <bits/stdc++.h>
using namespace std;
const int oo = numeric_limits<int>::max();
const long long M = 998244353, MAXN = 1e6 + 10;
long long n, c[MAXN];
long long mp(long long a, long long e) {
  long long ret = 1;
  while (e) {
    if (e % 2) ret = ret * a % M;
    a = a * a % M;
    e /= 2;
  }
  return ret;
}
int main() {
  ios_base::sync_with_stdio(false), cin.tie(0);
  cin >> n;
  c[0] = 1;
  for (int i = 0; i < n; i++)
    c[i + 1] = c[i] * (n - i) % M * mp(i + 1, M - 2) % M;
  long long ans = 0;
  for (int i = 1; i <= n; i++) {
    long long add = (i + 1) % 2 ? -1 : 1;
    add *= c[i];
    add = add * mp(3, n * (n - i) + i) % M;
    ans = (ans + add) % M;
  }
  ans = ans * 2 % M;
  for (int i = 0; i < n; i++) {
    long long add = (i + 1) % 2 ? -1 : 1;
    add *= c[i];
    long long inner = (mp(1 - mp(3, i), n) - mp(-mp(3, i), n)) % M;
    add = 3 * add * inner % M;
    ans = (ans + add) % M;
  }
  while (ans < 0) ans += M;
  cout << ans << '\n';
  return 0;
}
