#include using namespace std; bool isprime[20001]; vector prime; int dp[20001]; int main(void) { cin.tie(0); ios::sync_with_stdio(false); memset(dp,-1,sizeof(dp)); dp[0] = 0; memset(isprime,true,sizeof(isprime)); for(int i=2;i<=20000;i++) { if(isprime[i]) { prime.push_back(i); for(int j=2*i;j<=20000;j+=i) { isprime[j] = false; } } } for(int i=0;i=0;j--) { if(dp[j]==-1) { continue; } if(j + prime[i] <= 20000) { dp[j + prime[i]] = max(dp[j + prime[i]],dp[j] + 1); } } } int n; cin >> n; cout << dp[n] << '\n'; return 0; }