#include <bits/stdc++.h>
using namespace std;
void err(istream_iterator<string> it) {}
template <typename T, typename... Args>
void err(istream_iterator<string> it, T a, Args... args) {
  cerr << *it << " = " << a << endl;
  err(++it, args...);
}
vector<vector<int>> combine(int n, int k) {
  vector<vector<int>> result;
  int i = 0;
  vector<int> p(k, 0);
  while (i >= 0) {
    p[i]++;
    if (p[i] > n)
      --i;
    else if (i == k - 1)
      result.push_back(p);
    else {
      ++i;
      p[i] = p[i - 1];
    }
  }
  return result;
}
long long fact(int n) {
  long long ans = 1;
  for (int i = 1; i <= n; i++) ans *= i;
  return ans;
}
void code() {
  int n;
  cin >> n;
  long long ans = 0;
  vector<int> left, right;
  int one = 0, tot = 0;
  int len = combine(n, n / 2).size();
  ans = (len / 2) * (fact(n / 2 - 1)) * (fact(n / 2 - 1));
  cout << ans << "\n";
}
signed main() {
  std::ios_base::sync_with_stdio(false);
  int t = 1;
  for (int i = 0; i < t; i++) {
    code();
  }
}
