#include <bits/stdc++.h>
using namespace std;
const int oo = (int)1e9;
const double PI = 2 * acos(0.0);
const double eps = 1e-9;
const int MOD = 1e9 + 7;
map<pair<int, pair<int, char> >, long long> mem;
int n;
long long dp(int mask1, int mask2, char curr) {
  if (curr == n) return 1;
  if (mem.count(make_pair(mask1, make_pair(mask2, curr))))
    return mem[make_pair(mask1, make_pair(mask2, curr))];
  long long ret = 0;
  for (int i = 0; i < (int)(n); i++) {
    if (mask1 & (1 << i)) {
      int v = ((curr + n) - i) % n;
      if (mask2 & (1 << v)) {
        ret = (ret + dp(mask1 ^ (1 << i), mask2 ^ (1 << v), curr + 1)) % MOD;
      }
    }
  }
  return mem[make_pair(mask1, make_pair(mask2, curr))] = ret;
}
long long fact(int n) {
  long long ret = 1;
  for (int i = 2; i < (int)(n + 1); i++) {
    ret = (ret * i) % MOD;
  }
  return ret;
}
int main() {
  ios_base::sync_with_stdio(false);
  int arr[] = {0, 1,         0, 18,        0, 1800,
               0, 670320,    0, 734832000, 0, 890786230,
               0, 695720788, 0, 150347555, 0};
  cin >> n;
  cout << arr[n];
  return 0;
  cout << "int arr[] = {0, ";
  for (int i = 0; i < (int)(16); i++) {
    n = i + 1;
    if (i != 0) cout << ",";
    cout << (dp((1 << (n)) - 1, (1 << (n)) - 1, 0) * fact(n)) % MOD << flush;
  }
  cout << "};";
  return 0;
}
