#include "bits/stdc++.h" typedef long long int ll; using namespace std; bool primeNumbers[215]; vector primes; void setPrimeNumbers (){ primeNumbers[0] = false; primeNumbers[1] = false; for (ll i = 2; i < 215; i++){ primeNumbers[i] = true; } for (ll i = 2; i < 215; ++i){ for (ll j = i + 1; j < 215; j++){ if ( j % i == 0 ){ primeNumbers[j] = false; } } } int count = 0; for (ll i = 0; i < 215; ++i){ if (primeNumbers[i]) { primes.push_back(i); count++; } } } int main() { setPrimeNumbers(); map > myGraph; for (int & prime : primes) myGraph[prime]; map results; for (ll i = 0; i < 212; i++){ results.insert({i, 0}); } for (ll i = 0; i < (ll)primes.size(); i++){ for (ll j = i + 1; j < i+6; j++){ if (j < (ll) primes.size()){ if (primes[j] <= primes[i] + 14) myGraph[primes[i]].push_back(primes[j]); } } } queue myQueue; set used; results[2] = 1; myQueue.push(2); used.insert(2); while (!myQueue.empty()){ ll tmp = myQueue.front(); for (auto & i : myGraph.find(tmp)->second){ if (used.find(i) == used.end()){ myQueue.push(i); used.insert(i); } results[i] += results[tmp]; } myQueue.pop(); } ll n; cin >> n; cout << results[n] << endl; return 0; }