#include <bits/stdc++.h>
using namespace std;
const int oo = (int)1e9;
const double PI = 2 * acos(0.0);
const double eps = 1e-9;
int n, m, N, M, I, J;
int di[] = {1, -1, 0, 0, 1, 1, -1, -1};
int dj[] = {0, 0, 1, -1, 1, -1, 1, -1};
bool val(const int& i, const int& j) {
  return i >= 0 && i < I && j >= 0 && j < J;
}
int comp(const double& a, const double& b) {
  if (fabs(a - b) < eps) return 0;
  return a < b ? -1 : 1;
}
map<pair<int, int>, long long> dp;
long long calc(int ms1, int ms2) {
  int ind = __builtin_popcount(ms1);
  if (ind == n) return 1;
  map<pair<int, int>, long long>::iterator it = dp.find(make_pair(ms1, ms2));
  if (it != dp.end()) return it->second;
  long long ret = 0;
  for (int i = 0; i < (int)(n); i++) {
    if (ms1 & (1 << i)) continue;
    int j = (ind - i + n) % n;
    if (ms2 & (1 << j)) continue;
    ret += calc(ms1 | (1 << i), ms2 | (1 << j));
  }
  return dp[make_pair(ms1, ms2)] = ret;
}
long long arr[] = {0,    1, 0,     3, 0,       15, 0,        133, 0,
                   2025, 0, 37851, 0, 1030367, 0,  36362925, 0};
int main() {
  while (cin >> n) {
    for (int i = 1; i < (int)(n + 1); i++) {
      arr[n] *= i;
      arr[n] %= 1000000007;
    }
    cout << arr[n] << endl;
  }
  return 0;
  for (int i = 1; i < (int)(17); i++) {
    dp.clear();
    n = i;
    cout << i << " " << calc(0, 0) << endl;
  }
  for (int n = 3; n < (int)(4); n++) {
    vector<int> v1, v2, v3, v4;
    for (int i = 0; i < (int)(n); i++) {
      v1.push_back(i);
      v2.push_back(i);
      v3.push_back(i);
      v4.push_back(i);
    }
    int cc = 0;
    do {
      do {
        for (int i = 0; i < (int)(n); i++) v3[i] = (v1[i] + v2[i]) % n;
        vector<int> v5 = v3;
        sort(v3.begin(), v3.end());
        if (v3 == v4) {
          if (v5 == v3) {
            for (int i = 0; i < (int)(n); i++) cout << v1[i] << " ";
            cout << endl;
            for (int i = 0; i < (int)(n); i++) cout << v2[i] << " ";
            cout << endl;
            for (int i = 0; i < (int)(n); i++) cout << v5[i] << " ";
            cout << endl;
            cout << endl;
          }
          cc++;
        }
      } while (next_permutation(v2.begin(), v2.end()));
    } while (next_permutation(v1.begin(), v1.end()));
    cout << cc << endl;
  }
  return 0;
}
