#include using namespace std; #define ll long long #define all(x) x.begin(),x.end() #define rep(i,a,b) for(int i=a;i<=b;i++) #define each(a,x) for (auto& x: a) const char nl = '\n'; void solve(){ int n; cin >> n; vector is_prime(n+1,true); is_prime[0] = is_prime[1] = false; vector prime; rep(i,2,n) if (is_prime[i]) { prime.push_back(i); for (int j = i * i; j <= n; j+=i){ is_prime[j] = false; } } vector dp(n+1,-1); dp[0] = 0; each(prime,x){ for (int i = n; i >= x; i--){ if (dp[i - x] != -1) dp[i] = max(dp[i], dp[i - x] + 1); } } cout << dp[n]; } int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); int t = 1; //cin >> t; while (t--){ solve(); } }