import sys from math import isqrt input = sys.stdin.readline MOD = 998244353 def modinv(a, m=MOD): return pow(a, m-2, m) def solve(): N = int(input()) bp_changes = {} k = 2 while True: m_max = int(N**(1.0/k)) + 2 found = False for m in range(2, m_max+1): val = m**k if val > N: break if val not in bp_changes: bp_changes[val] = [] bp_changes[val].append((m, k)) found = True if not found or k > 63: break k += 1 bps = sorted(set(list(bp_changes.keys()) + [1, N+1])) C_mod = 1 ans = 0 inv2 = modinv(2) prev = 1 for bp in bps: if bp > prev: s, e = prev, min(bp-1, N) if s <= e: cnt = e-s+1 sum_i = (s+e)%MOD * (cnt%MOD) % MOD * inv2 % MOD ans = (ans + C_mod * sum_i) % MOD if bp in bp_changes: for m, k in bp_changes[bp]: C_mod = C_mod * m % MOD * modinv(m-1) % MOD prev = bp print(ans) solve()