import sys input = lambda :sys.stdin.readline()[:-1] ni = lambda :int(input()) na = lambda :list(map(int,input().split())) yes = lambda :print("yes");Yes = lambda :print("Yes");YES = lambda : print("YES") no = lambda :print("no");No = lambda :print("No");NO = lambda : print("NO") ####################################################################### def factorial(n): if n == 0: return 1 return n * factorial(n-1) def g(n, p): res = 0 while n: res += n // p n //= p return res def factorize(n): res = [] for i in range(2, int(n ** 0.5) + 1): if n % i == 0: cnt = 0 while n % i == 0: n //= i cnt += 1 res.append((i, cnt)) if n > 1: res.append((n, 1)) return res def gg(n, a): res = 10 ** 18 for p, k in factorize(a): res = min(res, g(n, p) // k) return res def greedy(n): res = 0 for b in range(2, factorial(n) + 1): res += gg(n, b) print(b, gg(n, b)) return res mod = 998244353 def solve(n): prime = [True] * (n + 1) prime[0] = prime[1] = False P = [] F = [] for i in range(2, n + 1): if prime[i]: P.append(i) x = n res = 0 while x: res += x // i x //= i F.append(res) for j in range(i * 2, n + 1, i): prime[j] = False ans = 0 for m in range(1, n + 1): res = 1 for i, p in enumerate(P): e = F[i] // m if e == 0: break res *= (1 + e) res %= mod #print(m, res) ans += res - 1 ans %= mod return ans N = ni() print(solve(N))