#include #include #include using namespace std; using ll = long long; void chmax(int& a, int b){a=max(a, b);} int main(void){ int n; cin >> n; int nn=20001; vector yakusu(nn+1, -1), prime; for(int i=2; i<=nn; i++){ if(yakusu[i]!=-1) continue; int copy=i; prime.push_back(i); while(copy<=nn){ if(yakusu[copy]==-1) yakusu[copy]=i; copy+=i; } } vector dp(n+1, -1e9); dp[0]=0; for(auto p:prime)if(p<=n){ vector old(n+1, -1e9); swap(old, dp); for(int i=0; i<=n; i++)if(old[i]>=0){ chmax(dp[i], old[i]); if(i+p<=n) chmax(dp[i+p], old[i]+1); //cout << i << ' ' << now << ' ' << p << endl; } //for(int j=0; j<=n; j++) cout << j << ' '; cout << endl; } cout << (dp[n]>=1?dp[n]:-1) << endl; return 0; }