#include #include #include using namespace std; int main(){ int N; cin >> N; vector isPrime(N+1,true); isPrime[0] = false; isPrime[1] = false; for(int i=2; i*i <= N; i++){ if(isPrime[i]) for(int j = i+i; j <= N; j+=i){ isPrime[j] = false; } } vector primes; for(int i = 2; i <= N;i++) if(isPrime[i]) primes.push_back(i); vector dp(N+1, -1); dp[0] = 0; for(int p:primes){ for(int j = N; j>=0; j--){ if(p + j <= N && dp[j] !=-1){ dp[p + j] = (dp[p+j] > dp[j] + 1) ? dp[p+j] : dp[j] + 1; } } } cout << dp[N] << endl; return 0; }