#include <bits/stdc++.h>
using namespace std;
const int maxn = 1000005;
const int inf = 0x3f3f3f3f;
const long long mod = 998244353;
inline void read(int &x) {
  int f = 1;
  x = 0;
  char c = getchar();
  while (c < '0' || c > '9') {
    if (c == '-') f = -1;
    c = getchar();
  }
  while (c >= '0' && c <= '9') {
    x = (x << 1) + (x << 3) + (c ^ 48);
    c = getchar();
  }
  x *= f;
  return;
}
inline void print(int x, char ch) {
  if (x < 0) {
    putchar('-');
    x = -x;
  }
  if (x > 9) print(x / 10, '\0');
  putchar(x % 10 + '0');
  if (ch != '\0') putchar(ch);
  return;
}
int n, m;
long long a[maxn];
long long b[maxn];
long long ans;
int main() {
  int i, j;
  read(n);
  a[0] = 1;
  b[0] = 1;
  for (i = 1; i <= n; i++) a[i] = (a[i - 1] * i) % mod;
  for (i = 1; i <= n; i++) b[i] = (b[i - 1] * (n - i + 1)) % mod;
  ans = a[n];
  for (i = 1; i < n; i++) {
    ans += (a[n] - b[n - i] + mod) % mod;
    ans %= mod;
  }
  cout << ans;
  return 0;
}
