#include <bits/stdc++.h>
using namespace std;
int ans[] = {0,         1, 0,         18, 0,         1800, 0,         670320, 0,
             734832000, 0, 890786230, 0,  695720788, 0,    150347555, 0};
int fact[22];
int num, m;
void dfs(int pos, int B, int C) {
  if (pos == m + 1) {
    num++;
    if (num >= 1000000007) num -= 1000000007;
    return;
  }
  for (int i = 1; i <= m; i++)
    if (!((1 << i) & B)) {
      int j = (i - 1 + pos - 1) % m + 1;
      if (!((1 << j) & C)) dfs(pos + 1, B ^ (1 << i), C ^ (1 << j));
    }
}
void init() {
  fact[0] = 1;
  for (int i = 1; i <= 16; i++)
    fact[i] = (long long)i * fact[i - 1] % 1000000007;
  for (int i = 1; i <= 16; i++) {
    m = i, num = 0;
    dfs(1, 0, 0);
    ans[i] = (long long)num * fact[i] % 1000000007;
    printf("%d,", ans[i]);
  }
}
int main() {
  int n;
  while (~scanf("%d", &n)) printf("%d\n", ans[n]);
  return 0;
}
