#include <bits/stdc++.h>
using namespace std;
const int sz = 1e6 + 9;
long long f[sz];
long long m = 998244353;
long long n;
long long ans;
long long mul(long long a, long long b) { return (a % m * b % m) % m; }
long long add(long long a, long long b) {
  return ((a % m + b % m) % m + m) % m;
}
int main() {
  f[0] = f[1] = 1;
  for (int i = 2; i < sz; i++) f[i] = mul(f[i - 1], i);
  scanf("%I64d", &n);
  long long N = n;
  N--;
  ans = add(mul(f[N], 2), -1);
  N--;
  long long tmp = 1;
  while (N > 1) {
    tmp = mul(tmp, N + 1);
    ans = add(ans, mul(add(f[N], -1), tmp));
    N--;
  }
  ans = mul(ans, n);
  printf("%I64d", ans);
  return 0;
}
