using System; using System.Collections.Generic; using System.Linq; namespace yukicoder { public class Program { public static void Main() { var n = int.Parse(Console.ReadLine()); var k = Prime(n); var m = k.Count; var c = new int[n + 1, m + 1]; c[0, 0] = 1; for(var i = 0; i < m; i++) { for(var j = 0; j <= n; j++) { if(c[j, i] > 0) { c[j, i + 1] = Math.Max(c[j, i], c[j, i + 1]); if (j + k[i] <= n) { c[j + k[i], i + 1] = Math.Max(c[j, i] + 1, c[j + k[i], i + 1]); } } } } Console.WriteLine(c[n, m] - 1); } static List Prime(int n) { var isPrime = new bool[n + 1]; var k = new List(); for (int i = 2; i <= n; i++) { isPrime[i] = true; } for (int i = 2; i * i <= n; i++) { if (isPrime[i]) { for (int j = i * i; j <= n; j += i) { isPrime[j] = false; } } } for (int i = 2; i <= n; i++) { if (isPrime[i]) { k.Add(i); } } return k; } } }