#include using namespace std; #define lli long long int #define uli unsigned long long int #define INF 999999999 #define rep(i,m,n) for(lli i = m;i < n;i++) #define rrep(i,m,n) for(lli i=n-1;i > m;i--) #define pb(n) push_back(n) #define Sort(n) sort(n.begin(), n.end()) #define Rev(n) reverse(n.begin(),n.end()) #define Out(S) cout << S << endl #define NeOut(S) cout << S #define HpOut(S) cout << setprecision(20) << S << endl; #define Vecpr vector> #define mod 1000000007; #define chmax(a, b) a = (((a)<(b)) ? (b) : (a)) #define chmin(a, b) a = (((a)>(b)) ? (b) : (a)) bool is_prime(lli x) { for(lli i = 2; i * i <= x; i++) { if(x % i == 0) return false; } return true; } int main(){ vectorprinum(20010,0); rep(i,2,20010)if(is_prime(i))prinum[i]=1; lli A,B,C,D,N; cin >> N; vectorDP(20010,-1); DP[0]=0; rep(i,2,20001){ if(prinum[i]){ DP[i]=0; for(int j=N;j>1;j--){ if(i+j<=N&&DP[j]!=-1){ chmax(DP[i+j],DP[j]+1); } } } } Out(DP[N]); }