#include <bits/stdc++.h>
using namespace std;
const long long M = 998244353;
const int maxn = 1e6;
long long f[maxn + 10], g[maxn + 10];
long long qpow(long long a, long long p, long long n) {
  long long res = 1;
  for (; p; a = a * a % n, p >>= 1) {
    if (p & 1) {
      res = res * a % n;
    }
  }
  return res;
}
inline long long inv(long long a, long long n) { return qpow(a, n - 2, n); }
int main(int argc, char const *argv[]) {
  f[0] = 1;
  int n;
  ios::sync_with_stdio(false);
  cin.tie(0);
  cin >> n;
  for (int i = 1; i <= n; ++i) {
    f[i] = f[i - 1] * i % M;
    g[i] = inv(f[i], M);
  }
  long long res = 0;
  for (int i = 1; i < n; ++i) {
    res += f[n] * (f[n - i] - 1 + M) % M * g[n - i] % M;
  }
  res = (res + f[n]) % M;
  cout << res << endl;
  return 0;
}
