// // Created by cteam24 on 11/27/21. // #include #include using namespace std; vector sieve(int n) { vector numbers(n + 1, true); vector primes; numbers[0] = numbers[1] = false; for (int i = 2; i < numbers.size(); ++i) { if (! numbers[i]) continue; primes.push_back(i); for (int j = 2*i; j < numbers.size(); j += i) numbers[j] = false; } return primes; } int main() { int n; cin >> n; auto primes = sieve (n); vector routes(primes.size(), 0); routes[0] = 1; for (int i = 1; i < primes.size(); ++i) { for (int j = i-1; j >= 0; --j) { if (primes[i] - primes[j] > 14) break; routes[i] += routes[j]; } } cout << *routes.rbegin() << endl; return 0; }