#include<iostream> #include<vector> using namespace std; const int K=20000+5; int prime[K]; void F(){ for(int i=0; i<K; i++) prime[i]=1; prime[0]=prime[1]=0; for(int i=2; i*i<=K; i++){ if(prime[i])for(int j=2; i*j<K; j++){ prime[i*j]=0; } } } int N; vector<int> a; int memo[K]; int main(){ cin>> N; F(); for(int i=0; i<K; i++)if(prime[i])a.push_back(i); for(int i=0; i<K; i++)memo[i]=-1; memo[0]=0;// !!!!!!!!!!!!!!!!! for(int p: a){ for(int i=K-1; i>=0; i--){ if(memo[i]>=0&&i+p<K) memo[i+p]=max(memo[i+p], memo[i]+1); } } cout<< memo[N]<< endl; return 0; }