def era(n): is_prime = [True] * (n+1) is_prime[0] = False is_prime[1] = False for i in range(2, int(n**0.5)+1): if not is_prime[i]: continue for j in range(2*i, n+1, i): is_prime[j] = False return [i for i in range(n+1) if is_prime[i]] N = int(input()) primes = era(N) dp = [-1] * (N+1) for prime in primes: for i in range(N, -1, -1): if i-prime >= 0 and dp[i-prime] != -1: dp[i] = max(dp[i], dp[i-prime]+1) dp[prime] = max(dp[prime], 1) print(dp[N])