import os
import sys
from collections import Counter
mod = 998244353
n = int(input())
# 线性筛
def is_(m):
lis = []
vis = [0] * (m + 1)
vis[0] = vis[1] = 1
for i in range(2, m + 1):
if vis[i] == 0:
lis.append(i)
for x in lis:
if i * x > m:
break
vis[i * x] = 1
if i % x == 0:
break
return vis, lis
vis, lis = is_(n)
# 唯一分解定理
def f(x):
li = []
if vis[x] == 0:
li.append(x)
return li
for i in range(2, x + 1):
while x % i == 0:
li.append(i)
x //= i
if x == 1:
break
return li
def ksm(a, b, k):
return pow(a, b, k)
li = []
for i in range(1, n + 1):
li += f(i)
dic = Counter(li)
ans = 1
for i in dic:
ans = ans * (ksm(i, dic[i] + 1, mod) - 1) % mod * ksm(i - 1, mod - 2, mod) % mod
print(ans)
链接:阶乘的约数和