#include <bits/stdc++.h>
using namespace std;
template <class T>
inline bool chkmax(T &x, T y) {
  return x < y ? x = y, 1 : 0;
}
template <class T>
inline bool chkmin(T &x, T y) {
  return x > y ? x = y, 1 : 0;
}
template <class T>
inline void rd(T &x) {
  x = 0;
  char c;
  while ((c = getchar()) < 48)
    ;
  do x = (x << 1) + (x << 3) + (c ^ 48);
  while ((c = getchar()) > 47);
}
const int N = 16, mod = 1e9 + 7;
int n;
long long sum;
long long ans[] = {0, 1,         0, 18,        0, 1800,
                   0, 670320,    0, 734832000, 0, 890786230,
                   0, 695720788, 0, 150347555, 0};
void Add(long long &x, long long y) {
  x += y;
  if (x >= mod) x -= mod;
}
void dfs(int a, int b, int c) {
  if (a == n + 1) {
    Add(sum, 1);
    return;
  }
  for (int i = (0), i_end_ = (n); i < i_end_; ++i) {
    if (b & (1 << i)) continue;
    int v = (a + i - 2) % n + 1;
    if (c & (1 << v)) continue;
    dfs(a + 1, b | (1 << i), c | (1 << v));
  }
}
int main() {
  rd(n);
  printf("%lld\n", ans[n]);
  return 0;
}
