#include using namespace std; #define rep(i,n) for(int i = 0; i < (n); i++) typedef long long ll; const int MOD = 1000000007; const int INF = 1001001001; vector prime(22222 , true); void pre_calc() { for (int i = 2; i < 22222; i++) { for (int j = 2; j * i < 22222; j++) { prime[i * j] = false; } } return; } int main () { int n; cin >> n; pre_calc(); vector dp(n + 1 , 0); //dp[n] = 1; for (int i = 2; i <= n; i++) { if (prime[i] == false)continue; vector dp2; dp2 = dp; for (int j = n; j >= 0; j--) { //if (prime[j - i] == false) continue; if(j - i >= 0 && (dp[j] > 0 || j == n)) dp2[j - i] = max(dp2[j - i] , dp[j] + 1); } dp = dp2; } int ans = dp[0]; if (dp[0] == 0) ans = -1; cout << ans << endl; /* for (int i = 0; i <= n; i++) { cout << i << " : " << dp[i] << endl; } */ return 0; }