#include #include #include #include using namespace std; #define MAX_N 20001 int N;vectorsieve(int n){vectorprime;vectoris_prime(n+1,true);is_prime[0]=is_prime[1]=false;for(int i=2;i<=n;++i){if(is_prime[i]){prime.push_back(i);for(int j=2*i;j<=n;j+=i){is_prime[j]=false;}}}return prime;}int main(){cin>>N;vectorprime=sieve(N);int number_of_prime=prime.size();vector>dp(N+1,vector(number_of_prime+1,-1));for(int i=0;i<=0;i++){for(int j=0;j<=number_of_prime;j++){dp[i][j]=0;}}for(int i=0;i<=N;i++){for(int j=0;j=0&&dp[i-prime[j]][j]!=-1){dp[i][j+1]=max(dp[i][j],dp[i-prime[j]][j]+1);}}}cout<