INF = 1e18 MOD = 998244353 from collections import Counter, defaultdict from bisect import bisect_left, bisect_right def num_ika(li, x): # x 以下の最大値(なければ -inf) res = bisect_right(li, x) - 1 return -INF if res == -1 else li[res] N = int(input()) limit = 10**6 distinct_prime_factor_count = [0]*(limit+1) primes = [] for i in range(2, limit+1): if distinct_prime_factor_count[i] == 0: primes.append(i) for num in range(i, limit+1, i): distinct_prime_factor_count[num] += 1 # primes の中の N 以下の最大値 target = num_ika(primes, N) data = [list() for _ in range(limit + 1)] for prime in primes: n = prime while n <= N: # n おきに加算 for i in range(n, N + 1, n): data[i].append(prime) n *= prime # LCM のパーツ dd = defaultdict(int) for i in range(N, 1, -1): if i != target: for k, v in Counter(data[i]).items(): if k not in dd: dd[k] = v else: vtmp = dd[k] if vtmp < v: # 更新 dd[k] = v ans = 1 for k, v in dd.items(): ans *= pow(k, v, MOD) ans %= MOD print(ans)