#include <bits/stdc++.h>
using namespace std;
int inv(int n) {
  int r = 1, e = 998244353 - 2;
  while (e > 0) {
    if (e & 1) r = ((long long int)r * n) % 998244353;
    e >>= 1;
    n = ((long long int)n * n) % 998244353;
  }
  return r;
}
int fact[1000001], invfact[1000001];
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;
  invfact[n] = inv(fact[n]);
  for (i = n - 1; i >= 0; i--)
    invfact[i] = ((long long int)(i + 1) * invfact[i + 1]) % 998244353;
  long long int ans = 0;
  for (i = 0; i < n; i++) {
    int k = n - i + 1;
    long long int c =
        (i == 0)
            ? n
            : (fact[n] * (((((long long int)k * k - 2 * k + 2) % 998244353) *
                           invfact[k]) %
                          998244353)) %
                  998244353;
    ans += c * i + (fact[n] - c) * (i + n), ans %= 998244353;
  }
  long long int l = ((long long int)n * fact[n]) % 998244353;
  ans = ((l * (l + 1)) % 998244353) * inv(2) - ans, ans %= 998244353;
  if (ans < 0) ans += 998244353;
  cout << ans << endl;
  return 0;
}
