#include using namespace std ; typedef long long ll ; #define rep(i,n) for(int i = 0 ; i < n ; i++) #define rrep(i,a,b) for(int i = a ; i < b ; i++) const int MAX_N = 1000007 ; const int mod = 998244353 ; int n ; int prime_fuctor[MAX_N] ; void ertstns(){ memset(prime_fuctor,-1,sizeof(prime_fuctor)) ; for(int i = 2 ; i <= MAX_N ; i++){ if(prime_fuctor[i] == -1){ for(int j = i ; j <= MAX_N ; j += i){ prime_fuctor[j] = i ; } } } } set tmp ; map rem ; int main(){ ertstns() ; cin >> n ; for(int i = 1 ; i < n ; i++){ map cnt ; set ex ; int k = i , p = (n - i) ; while(k != 1){ int m = prime_fuctor[k] ; tmp.insert(m) ; k /= m ; ex.insert(m) ; cnt[m]++ ; } while(p != 1){ int m = prime_fuctor[p] ; tmp.insert(m) ; p /= m ; ex.insert(m) ; cnt[m]++ ; } for(int u : ex){ rem[u] = max(rem[u],cnt[u]) ; } } ll ans = 1 ; for(ll u : tmp){ while(rem[u] > 0){ (ans *= u) %= mod ; rem[u]-- ; } } cout << ans << endl ; }