"""

後半はいらない
素数のmaxをとる
全ての約数素数に関してやる?
logにはなるかな…

"""

import sys
from sys import stdin

N = int(stdin.readline())

def Sieve(n): #n以下の素数全列挙(O(nloglogn)) retは素数が入ってる。divlisはその数字の素因数が一つ入ってる

    ret = []
    divlis = [-1] * (n+1) #何で割ったかのリスト(初期値は-1)
    
    flag = [True] * (n+1)
    flag[0] = False
    flag[1] = False

    ind = 2
    while ind <= n:

        if flag[ind]:
            ret.append(ind)

            ind2 = ind ** 2

            while ind2 <= n:
                flag[ind2] = False
                divlis[ind2] = ind
                ind2 += ind

        ind += 1

    return ret,divlis

plis,divlis= Sieve(N+10)

ans = 1
mod = 998244353

#print (plis)

for p in plis:

    nmax = 0
    for i in range(p,N,p):
        rev = (N-i) * i
        now = 0
        while rev % p == 0:
            rev //= p
            now += 1
        nmax = max(now,nmax)

    ans *= pow(p,nmax,mod)
    ans %= mod

print (ans)