#include <iostream>
using namespace std;
#define MOD 1000000007;
int main() {
    int n;
    cin >> n;
    //当且仅当任意相邻两项之和均为奇数
    //奇数 + 偶数 为奇数 ----》奇 偶 数相间排列
    //n为偶数时 奇数偶数  偶数奇数都行
    //n为奇数时 只能奇数偶数  因为奇数多一个 且每个整数恰好出现一次
    
    long long ans = 1;
    int odds = (n + 1) / 2;  // 奇数个数
    int evens = n / 2;       // 偶数个数
    
    // 计算奇数排列数
    for (int i = 1; i <= odds; ++i)
        ans = ans * i % MOD;
    
    // 计算偶数排列数
    for (int i = 1; i <= evens; ++i)
        ans = ans * i % MOD;
    
    // 当n为偶数时两种模式都有效,需要乘2
    if (n % 2 == 0)
        ans = ans * 2 % MOD;
    
    cout << ans;



}
// 64 位输出请用 printf("%lld")