/*
          ********
    *******      *******
      ******    ******
         ****  ****
             **
*/

#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
/// みなさん、こんにちは！
