#include <stdio.h>
#include <iostream>
#include <stdlib.h>
#include <vector>
#include <cassert>
#include <algorithm>
#include <functional>
using namespace std;
unsigned long long L;
 
int main(){
  cin >> L;
  
  long long result = 1LL;
  for(int i=1; i<12; i++){
    result = result*(L-i)/i;
  }
  cout << result;
}
#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
using namespace __gnu_pbds;
using namespace std;

// s.find_by_order(index);
// s.order_of_key(value);

#define int long long
#define all(a) a.begin(), a.end()
#define dl '\n'
#define why (int)1000000007
//#define why (int)998244353

typedef tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update> indexed_set;

int inf = 1e18;
double pi = 3.141592653589;
int mod = why;
int fast_power(int base, int power)
{
  int result = 1;
  while (power) {
    if (power % 2)
      result = (result * base) % mod;
    base = (base * base) % mod;
    power /= 2;
  }
  return result;
}

int inverse(int base) { return fast_power(base, mod - 2); }
int test = 1;

int printNcR(int n, int r)
{
  long long p = 1, k = 1;
  if (n - r < r)
    r = n - r;

  if (r != 0) {
    while (r) {
      p *= n;
      k *= r;
      long long m = __gcd(p, k);
      p /= m;
      k /= m;

      n--;
      r--;
    }
  }

  else
    p = 1;
  return p;
}

const pair<int, int> dir[] = {{0, -1}, {-1, 0}, {1, 0}, {0, 1}};

const int N = 2e5 + 5;

vector<int> adj[N];
vector<int> vis(N);

void solve()
{
  int n;
  cin >> n;
  cout << printNcR(n - 1, 11);
}

signed main()
{
  // #ifndef ONLINE_JUDGE
  //   freopen("input.txt", "r", stdin);
  //   freopen("output.txt", "w", stdout);
  // #endif
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  int t = 1;
  // cin >> t;
  while (t--) {
    // cout << "Case #" << test++ << ": ";
    solve();
  }
}