#include #include #define FALSE -1 using namespace std; vector n_list; void eratos(bool cp_list[],int max){ for(int i=2;i<=max;i++){ cp_list[i]=true; } cp_list[1]=false; for(int i=2;i<=max;i++){ if(cp_list[i]){ n_list.push_back(i); for(int j=i+i;j<=max;j+=i){ cp_list[j]=false; } } } } int main(){ int s=0,e=0,ans=-1,size,num=0,n; bool b[20001]; cin >> n; eratos(b,20000); size=n_list.size(); vector> dp(size,vector(n+1,-1)); for(int i=0;i=0&&dp[i-1][j-n_list[i]]!=FALSE){ dp[i][j]=max(dp[i][j],dp[i-1][j-n_list[i]]+1); } } } if(dp[size-1][n]==FALSE) cout <<"-1\n"; else cout << dp[size-1][n]<