#include using namespace std; int main() { int n, i, j; cin >> n; int t[n + 1] = {}; vector sosuu; for(i = 2; i * i <= n; i++) { if(t[i] == 0) { sosuu.push_back(i); for(j = i * i; j <= n; j += i) { t[j] = 1; } } } for(; i <= n; i++) { if(t[i] == 0) sosuu.push_back(i); } int ss = sosuu.size(); int dp[ss + 1][n + 1]; for(i = 0; i <= ss; i++) { for(j = 0; j <= n; j++) { dp[i][j] = -1; } } dp[0][0] = 0; for(i = 0; i < ss; i++) { for(j = 0; j <= n; j++) { if(j - sosuu[i] >= 0 && dp[i][j - sosuu[i]] != -1) { dp[i + 1][j] = max(dp[i][j], dp[i][j - sosuu[i]] + 1); } else { dp[i + 1][j] = dp[i][j]; } } } cout << dp[ss][n] << endl; return 0; }