#include <algorithm>
#include <cfloat>
#include <climits>
#include <cmath>
#include <complex>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <functional>
#include <iostream>
#include <map>
#include <memory>
#include <queue>
#include <deque>
#include <set>
#include <sstream>
#include <stack>
#include <string>
#include <utility>
#include <vector>
#include <cassert>
#include <iostream>
#include <stdio.h>
#include <time.h>
 
using namespace std;

typedef long long ll;
 
#define sz size()
#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define all(c) (c).begin(), (c).end()
#define rep(i,a,b) for(ll i=(a);i<(b);++i)
#define per(i,a,b) for(ll i=b-1LL;i>=(a);--i)
#define clr(a, b) memset((a), (b) ,sizeof(a))
#define ctos(c) string(1,c)

#define MOD 1000000007

int main(){
  ll n;
  cin>>n;
  if(n==12){
    cout << 1 << endl;
    return 0;
  }
  n-=12;
  long double C[300][300];

  //if(C[0][0]==0){
    for(int i = 0; i < 300; i++){
      C[i][0]=C[i][i]=1;
    }
    for(int i = 1; i < 300;i++){
      for(int j =1; j < i; j++){
        C[i][j]=(C[i-1][j-1]+C[i-1][j]);
      }
    }
  //}
  printf("%lld\n", (ll)C[11+n][n]);
  return 0;
}
#include <stdio.h>
#include <math.h>

int main(){
	
	long long int n, i, j;
	
	scanf("%lld", &n);
	
	long long int root = sqrt(n);
	
	int found = 0;
	long long int a = 1, b = 1;
	
	for (i = 3; i < n; i*=3)
	{
		b = 1;
		for (j = 5; j < n; j*=5)
		{
			if (i+j == n)
			{
				found = 1;
				printf("%lld %lld\n", a, b);
				break;
			}
			b++;
		}
		a++;
		
		if (found == 1)
		{
			break;
		}
	}
	
	if (found == 0)
	{
		printf("-1\n");
	}
	
	return 0;
}