#include using namespace std; bool is_prime[20010]; int dp[20010]; int main(){ int N; cin >> N; memset(is_prime, -1, sizeof(is_prime)); vector primes; for(int i = 2; i <= N; i++){ if(!is_prime[i]) continue; primes.push_back(i); for(int j = i * 2; j <= N; j += i) is_prime[j] = false; } memset(dp, -1 ,sizeof(dp)); dp[0]=0; for(auto p:primes){ for(int i = N; i - p >= 0; i--){ if(dp[i - p] != -1) dp[i] = max(dp[i], dp[i - p] + 1); } } cout << dp[N] << endl; return 0; }