#include<iostream>
#include<vector>
#include<map>
#include<set>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<climits>
#include<stdio.h>
#include<queue>
#include<list>
#include<stack>
#include<random>
#include<chrono>
//mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
using namespace std;
#define COL 31
#define ROW 31
#define ll long long int
#define ull unsigned long long int
#define mp make_pair
#define pb push_back
#define mem memset
#define inf 1e18
#define mod 1000000007
#define ff first
#define ss second
#define ipair pair<int,int>
int main()
{
	ull l,i,j,k;
	cin>>l;
	ull dp[l+1][13];
	for(i=0;i<=l;i++)
		for(j=0;j<=12;j++)
			dp[i][j]=0;
	for(i=0;i<=12;i++)
	{
		dp[0][i]=0;
		dp[1][i]=0;
	}
	dp[1][1]=1;
	dp[0][0]=1;
	for(i=1;i<=l;i++)
		dp[i][0]=0;
	for(i=2;i<=l;i++)
	{
		for(j=1;j<=12;j++)
		{
			ull sum=0;
			for(k=1;k<=i;k++)
				sum+=dp[i-k][j-1];
			dp[i][j]=sum;
		}
	}
	cout<<dp[l][12]<<'\n';
	return 0;
}
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using vl = vector<ll>;
using vi = vector<int>;
using pll = pair<ll, ll>;
using pii = pair<int, int>;


#define F first
#define S second
#define allv(v) v.begin(), v.end()
#define alla(a, N) a, a + N
#define np next_permutation

inline void fastIO() {
	cin.tie(nullptr) -> sync_with_stdio(false);
}


/** Interface */

inline int readChar();
template <class T = int> inline T readInt(); 
template <class T> inline void writeInt( T x, char end = 0 );
inline void writeChar( int x ); 
inline void writeWord( const char *s );
inline void flush();



const ll MOD1 = 1000000007;
const ll MOD2 =  998244353;


const int arraysize = 205;
bool vis[arraysize][arraysize];
int dis[arraysize][arraysize];
vector<pii> adj[arraysize];
ll a[arraysize];
ll b[arraysize];
ll c[arraysize];
string s, t;
ll N, M, Q, K, H, W, R, C;
int u, v, d;


inline string YNEOS(bool b) {
	return b ? "YES" : "NO";
}

inline string YNeos(bool b) {
	return b ? "Yes" : "No";
}




// Template by https://usaco.guide/gold/PURS?lang=cpp
template<class T> struct SegTree { // comb(ID,b) = b
	const T ID = 0; int n; vector<T> seg;
	T comb(T a, T b) { return a ^ b; }
	void init(int _n) { n = _n; seg.assign(2*n,ID); }
	void pull(int p) { seg[p] = comb(seg[2*p],seg[2*p+1]); }
	void upd(int p, T val) { // set val at position p
		seg[p += n] = val; for (p >>= 1; p; p >>= 1) pull(p); }
	T query(int l, int r) { // min on interval [l, r]
		T ra = ID, rb = ID; // ----- blank space -----
		for (l += n, r += n+1; l < r; l >>= 1, r >>= 1) {
			if (l&1) ra = comb(ra,seg[l++]);
			if (r&1) rb = comb(seg[--r],rb);
		} return comb(ra,rb);
	}
};



/* n choose k [possibly mod m] */
ll choose(ll n, ll k) {
	ll P = 1;
	for (int i = 0; i < k; ++i) P *= n-i;
	for (int i = 1; i <= k; ++i) P /= i;
	return P;
}



void solve() {
	ll N = readInt(), ans = 1;
	for (ll i = 1; i <= 11; ++i)
		ans *= N - i, ans /= i;
	writeInt(ans, '\n');
}



int main() {

	// int T; cin >> T;
	// while (T--) solve();
	
	solve();

	flush();
}






/** Fast Input/Output (IO) */

/** Read */

static const int buf_size = 1 << 14;

inline int getChar() {
	static char buf[buf_size];
	static int len = 0, pos = 0;
	if (pos == len)
		pos = 0, len = fread(buf, 1, buf_size, stdin);
	if (pos == len)
		return -1;
	return buf[pos++];
}

inline int readChar() {
	int c = getChar();
	while (c <= 32)
		c = getChar();
	return c;
}

template <class T>
inline T readInt() {
	int s = 1, c = readChar();
	T x = 0;
	if (c == '-')
		s = -1, c = getChar();
	while ('0' <= c && c <= '9')
		x = x * 10 + c - '0', c = getChar();
	return s == 1 ? x : -x;
}

/** Write */

static int write_pos = 0;
static char write_buf[buf_size];

inline void writeChar( int x ) {
	if (write_pos == buf_size)
		flush();
	write_buf[write_pos++] = x;
}

template <class T> 
inline void writeInt( T x, char end ) {
	if (x < 0) writeChar('-'), x = -x;

	char s[24];
	int n = 0;
	while (x || !n)
		s[n++] = '0' + x % 10, x /= 10;
	while (n--) writeChar(s[n]);
	if (end) writeChar(end);
}

inline void writeWord( const char *s ) {
	while (*s) writeChar(*s++);
}

inline void flush() {
	fwrite(write_buf, 1, write_pos, stdout), write_pos = 0;
}