#include using namespace std; using i64 = long long; #define rep(i,s,e) for(int (i) = (s);(i) <= (e);(i)++) int N; int prime[20202]; void init(){ rep(i,2,N){ if(prime[i] == 0){ prime[i] = 1; for(int j = i + i;j <= N;j+=i) prime[j] = -1; } } } int main(){ cin >> N; init(); vector dp(N + 1,-1); dp[0] = 0; rep(i,2,N){ if(prime[i] == 1){ vector next = dp; rep(j,i,N){ if(dp[j - i] == -1) continue; next[j] = max(next[j],dp[j - i] + 1); } swap(dp,next); } } cout << dp[N] << endl; }