import math def sieve_of_eratosthenes(n): prime = [True]*(n+1) prime[0] = False prime[1] = False sqrt_n = math.ceil(math.sqrt(n)) for i in range(2, sqrt_n+1): if prime[i]: for j in range(2*i, n+1, i): prime[j] = False return prime N = int(input()) p = sieve_of_eratosthenes(N) for i in reversed(range(N+1)): if p[i]: pp = i break res = 1 mod = 998244353 for i in range(2,len(p)): if i == pp: break if p[i]: c = math.log(N)/math.log(i) res *= pow(i, int(c), mod) res %= mod print(res)