#include #define REP(i,n,N) for(int i=(n);i<(int) N;i++) #define RREP(i,n,N) for(int i=N-1;i>=(int) n;i--) #define p(s) cout<<(s)<>N; REP(i,1,N+1) dp[i]=-1; REP(i,2,N+1) isprime[i]=true; make_prime(N); dp[0]=0; REP(i,2,N+1){ if(isprime[i]){ RREP(j,0,N-i+1){ if(dp[j]==-1) continue; dp[j+i]=max(dp[j+i],dp[j]+1); } } } p(dp[N]); }