/*
********
******* *******
****** ******
**** ****
**
*/
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define el '\n'
const ll MOD = 998244353;
const ll N = 200005;
ll n;
ll f[N] , inv[N];
ll power(ll b , ll e)
{
ll res = 1;
b %= MOD;
while(e > 0)
{
if(e % 2 == 1) res = (res * b) % MOD;
b = (b * b) % MOD;
e /= 2;
}
return res;
}
void pre()
{
f[0] = 1;
inv[0] = 1;
for(int i = 1 ; i < N ; i++)
{
f[i] = (f[i - 1] * i) % MOD;
}
inv[N - 1] = power(f[N - 1] , MOD - 2);
for(int i = N - 2 ; i >= 1 ; i--)
{
inv[i] = (inv[i + 1] * (i + 1)) % MOD;
}
}
ll nck(ll n , ll k)
{
if(k < 0 || k > n) return 0;
return f[n] * inv[k] % MOD * inv[n - k] % MOD;
}
signed main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
freopen("wonderful.INP" , "r" , stdin);
freopen("wonderful.OUT" , "w" , stdout);
pre();
cin >> n;
ll ans = 0;
for(int i = 1 ; i <= n ; i++)
{
ll c1 = (n - i + 1) % MOD;
ll c2 = (1 - ((i - 1) % MOD) * ((n - i) % MOD)) % MOD;
ll ci = (c1 * c2) % MOD;
if(i % 2 == 0) ci = -ci;
ci = (ci % MOD + MOD) % MOD;
ans = (ans + ci * f[n - i]) % MOD;
}
cout << ans;
return 0;
}
/// LeviHanlde
/// みなさん、こんにちは!
LyoKICAgICAgICAgICoqKioqKioqCiAgICAqKioqKioqICAgICAgKioqKioqKgogICAgICAqKioqKiogICAgKioqKioqCiAgICAgICAgICoqKiogICoqKioKICAgICAgICAgICAgICoqCiovCgojaW5jbHVkZTxiaXRzL3N0ZGMrKy5oPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdHlwZWRlZiBsb25nIGxvbmcgbGw7CiNkZWZpbmUgZWwgJ1xuJwoKY29uc3QgbGwgTU9EID0gOTk4MjQ0MzUzOwpjb25zdCBsbCBOID0gMjAwMDA1OwoKbGwgbjsKbGwgZltOXSAsIGludltOXTsKCmxsIHBvd2VyKGxsIGIgLCBsbCBlKQp7CiAgICBsbCByZXMgPSAxOwogICAgYiAlPSBNT0Q7CiAgICB3aGlsZShlID4gMCkKICAgIHsKICAgICAgICBpZihlICUgMiA9PSAxKSByZXMgPSAocmVzICogYikgJSBNT0Q7CiAgICAgICAgYiA9IChiICogYikgJSBNT0Q7CiAgICAgICAgZSAvPSAyOwogICAgfQogICAgcmV0dXJuIHJlczsKfQoKdm9pZCBwcmUoKQp7CiAgICBmWzBdID0gMTsKICAgIGludlswXSA9IDE7CgogICAgZm9yKGludCBpID0gMSA7IGkgPCBOIDsgaSsrKQogICAgewogICAgICAgIGZbaV0gPSAoZltpIC0gMV0gKiBpKSAlIE1PRDsKICAgIH0KCiAgICBpbnZbTiAtIDFdID0gcG93ZXIoZltOIC0gMV0gLCBNT0QgLSAyKTsKCiAgICBmb3IoaW50IGkgPSBOIC0gMiA7IGkgPj0gMSA7IGktLSkKICAgIHsKICAgICAgICBpbnZbaV0gPSAoaW52W2kgKyAxXSAqIChpICsgMSkpICUgTU9EOwogICAgfQp9CgpsbCBuY2sobGwgbiAsIGxsIGspCnsKICAgIGlmKGsgPCAwIHx8IGsgPiBuKSByZXR1cm4gMDsKICAgIHJldHVybiBmW25dICogaW52W2tdICUgTU9EICogaW52W24gLSBrXSAlIE1PRDsKfQoKc2lnbmVkIG1haW4oKQp7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOwogICAgY2luLnRpZSgwKTtjb3V0LnRpZSgwKTsKCiAgICBmcmVvcGVuKCJ3b25kZXJmdWwuSU5QIiAsICJyIiAsIHN0ZGluKTsKICAgIGZyZW9wZW4oIndvbmRlcmZ1bC5PVVQiICwgInciICwgc3Rkb3V0KTsKCiAgICBwcmUoKTsKCiAgICBjaW4gPj4gbjsKCiAgICBsbCBhbnMgPSAwOwogICAgZm9yKGludCBpID0gMSA7IGkgPD0gbiA7IGkrKykKICAgIHsKICAgICAgICBsbCBjMSA9IChuIC0gaSArIDEpICUgTU9EOwogICAgICAgIGxsIGMyID0gKDEgLSAoKGkgLSAxKSAlIE1PRCkgKiAoKG4gLSBpKSAlIE1PRCkpICUgTU9EOwogICAgICAgIGxsIGNpID0gKGMxICogYzIpICUgTU9EOwoKICAgICAgICBpZihpICUgMiA9PSAwKSBjaSA9IC1jaTsKICAgICAgICBjaSA9IChjaSAlIE1PRCArIE1PRCkgJSBNT0Q7CiAgICAgICAgYW5zID0gKGFucyArIGNpICogZltuIC0gaV0pICUgTU9EOwogICAgfQoKICAgIGNvdXQgPDwgYW5zOwogICAgcmV0dXJuIDA7Cn0KCi8vLyBMZXZpSGFubGRlCi8vLyDjgb/jgarjgZXjgpPjgIHjgZPjgpPjgavjgaHjga/vvIEK