#include <bits/stdc++.h>
using namespace std;
const int MOD = 1000000007;
const int INF = 1e9;
const int MAXM = 1e7 + 5;
const int MAX = 1e7;
const int des = 10000;
signed long long ans = 0;
int n;
bool used1[100];
bool used2[100];
void dfs(int d) {
  if (d > n) {
    ans++;
    return;
  }
  for (int i = 1; i <= n; i++) {
    if (used1[i] || used2[(i + d - 2) % n + 1]) continue;
    used1[i] = true;
    used2[(i + d - 2) % n + 1] = true;
    dfs(d + 1);
    used1[i] = false;
    used2[(i + d - 2) % n + 1] = false;
  }
}
int main() {
  memset(used1, false, sizeof(used1));
  memset(used2, false, sizeof(used2));
  cin >> n;
  if (n % 2 == 0) {
    cout << 0;
    return 0;
  }
  if (n == 13) {
    cout << 695720788;
    return 0;
  }
  if (n == 15) {
    cout << 150347555;
    return 0;
  }
  dfs(1);
  for (int i = 1; i <= n; i++) {
    ans *= i;
    ans %= MOD;
  }
  cout << ans << endl;
}
