def primes(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(i * 2, n + 1, i): is_prime[j] = False return (i for i in range(n + 1) if is_prime[i]) M = int(input()) N = int(input()) C = tuple(map(int, input().split())) P = set(primes(M)) X = [] dp = [-float('inf')] * (M + 1) dp[0] = 0 for i in range(N): for j in range(C[i], M + 1): dp[j] = max(dp[j], dp[j - C[i]] + 1) for p in P: if dp[M - p] != -float('inf'): X.append((dp[M - p], p)) X.sort(reverse=True) ans = M // (min(C)) for c, r in X: if r in P: ans += c P.remove(r) print(ans)