#include <bits/stdc++.h>
#pragma comment(linker, "/stack:640000000")
using namespace std;
const double EPS = 1e-9;
const int INF = 0x7f7f7f7f;
const double PI = acos(-1.0);
template <class T>
inline T gcd(T a, T b) {
  return (b) == 0 ? (a) : gcd((b), ((a) % (b)));
}
template <class T>
inline T lcm(T a, T b) {
  return ((a) / gcd((a), (b)) * (b));
}
template <typename T>
string NumberToString(T Number) {
  ostringstream second;
  second << Number;
  return second.str();
}
struct debugger {
  template <typename T>
  debugger& operator,(const T& v) {
    cerr << v << " ";
    return *this;
  }
} dbg;
int t, n, m;
long long dp[105][10];
long long nCr(long long n, long long m) {
  long long ans = 1;
  long long cur = 2;
  for (int i = m + 1; i <= n; i++) {
    ans *= (long long)i;
    if (cur <= n - m && ans % cur == 0) ans /= cur, cur++;
  }
  return ans;
}
long long call(int x, int lft) {
  if (lft == 0) return 1;
  long long& ret = dp[x][lft];
  if (ret != -1) return ret;
  ret = 0;
  ret += x * x * lft + call(x - 1, lft - 1);
  return ret;
}
int main() {
  memset(dp, -1, sizeof(dp));
  while (~scanf("%d", &n)) {
    long long ans = 1;
    for (int i = 0; i < (5); i++) ans *= (n - i);
    ans /= 120;
    for (int i = 0; i < (5); i++) ans *= (n - i);
    printf("%lld\n", ans);
  }
  return 0;
}
