#include<bits/stdc++.h>
const int mod = 998244353,N = 1e6 + 5;
int qpow(int a,int b){
int res = 1;
for (;b;b >>= 1){
if (b & 1) res = 1LL * res * a % mod;
a = 1LL * a * a % mod;
}
return res;
}
bool notPrime[N];
int prime[N],p;
int main(){
std::cin.tie(0)->sync_with_stdio(0);
int n;std::cin >> n;
notPrime[0] = notPrime[1] = 1;
for (int i = 2;i <= n;i++){
if (!notPrime[i]) prime[++p] = i;
for (int j = 1;j <= p && i * prime[j] <= n;j += i){
notPrime[i * prime[j]] = 1;
if (i % prime[j] == 0) break;
}
}
int c = n - p,facn = 1;
int invp = qpow(p + 1,mod - 2),inv2 = qpow(2,mod - 2);
for (int i = 1;i <= n;i++) facn = 1LL * facn * i % mod;
int ans = 1LL * c * (c - 1) % mod * facn % mod * inv2 % mod * inv2 % mod;
for (int i = 1;i <= n;i++)
if (notPrime[i]){
int k = std::lower_bound(prime + 1,prime + 1 + p,i) - prime - 1;
ans = (ans + 1LL * facn * invp % mod * inv2 % mod * (k * (k + 1LL) % mod + 1LL * (p - k) * (p - k + 1) % mod)) % mod;
}
std::cout << ans << '\n';
return 0;
}