import java.util.* fun main(args: Array) { val sc = Scanner(System.`in`) val N = sc.nextInt() when (N) { 1 -> { println(-1); return } 2, 3 -> { println(1); return } } val primes = mutableListOf(2, 3) for (i in 5 until N step 6) primes.add(i) for (i in 7 until N step 6) primes.add(i) for (i in 5 until N step 6) { if (primes.contains(i)) { for (j in i*3 until N step i*2) primes.remove(j) } if (primes.contains(i+2)) { for (j in i*3+6 until N step i*2+4) primes.remove(j) } } val dp = Array(N+1, {0}) for (n in primes) { for (i in N-n downTo 0) if (dp[i] > 0) dp[i+n] = Math.max(dp[i+n], dp[i]+1) dp[n] = Math.max(dp[n], 1) } println(if (dp[N] > 0) dp[N] else -1) }