#include #include #include #include #include #define rep(i,a) for(int i=0;i=0;i--) #define ll long long #define INF 11451419191810 using namespace std; ll n; vector p; void dfs(ll sum, ll index,ll ans){ if (index == p.size()) return; if (sum == n){ cout << ans << endl; exit(0); }if (sum > n){ return ; } else{ nrep(i, index, p.size()){ dfs(sum + p[index], i+1, ans + 1); } } } int main(){ cin >> n; vector prime(n + 1); rep(i, n+1) prime[i] = true; prime[0] = false; prime[1] = false; ll index = 2; while (index*index < n){ if (prime[index]){ ll j = index + index; while (j <= n){ prime[j] = false; j += index; } }index++; }ll count = 0; rep(i, n + 1) if (prime[i]) p.push_back(i); dfs(0, 0, 0); cout << -1 << endl; return 0; }