## https://yukicoder.me/problems/no/707 MAX_INT = 10 ** 18 def main(): N = int(input()) primes = [] is_primes = [True for _ in range(N + 1)] is_primes[1] = False for p in range(2, N + 1): if not is_primes[p]: continue x = 2 * p primes.append(p) while x <= N : is_primes[x] = False x += p dp = [-1] * (N + 1) dp[0] = 0 for p in primes: for i in reversed(range(N + 1)): if dp[i] == -1: continue if i + p <= N: dp[i + p] = max(dp[i] + 1, dp[i + p]) if dp[-1] == -1: print(-1) else: print(dp[-1]) if __name__ == "__main__": main()