""" くね。 k = 1, 2 さえ処理すれば ok k = 1 : 自明 k = 2 : s = isqrt(n) - 1 """ from math import isqrt from collections import deque import sys mod = 998244353 input = sys.stdin.readline II = lambda : int(input()) MI = lambda : (int(_) for _ in input().split()) LI = lambda : list(int(_) for _ in input().split()) SI = lambda : input() n = II() def calc(n): v = isqrt(n) - 1 s2 = v*(v+1)*(2*v+1)//6 % mod s3 = (v*(v+1)//2)**2 % mod s4 = v*(v+1)*(2*v+1)*(3*v*v+3*v-1)//30 % mod tmp = 2*s4 + 3*s3 + s2 v += 1 return (tmp + v*(v*v+n)*(n-v*v+1)//2) % mod lim = int(n ** (1 / 3) + 10) inv = [0] + [pow(i, -1, mod) for i in range(1, lim)] eve = [] for x in range(2, lim): p = x ** 3 m = x * inv[x-1] % mod while p <= n: eve.append((p, m)) p *= x eve.sort() eve.append((n+1, -1)) ans = 0 i = 0 cc = 1 pv = 0 while i < len(eve): p = eve[i][0] nv = calc(p - 1) ans += (nv - pv) * cc % mod pv = nv if i == len(eve) - 1: break while i < len(eve) and eve[i][0] == p: cc = (cc * eve[i][1]) % mod i += 1 print(ans % mod)