#include using namespace std; vector< bool > get_prime(int n) { vector< bool > prime(n + 1, true); if(n >= 0) prime[0] = false; if(n >= 1) prime[1] = false; for(int i = 2; i * i <= n; i++) { if(prime[i]) { for(int j = i + i; j <= n; j += i) prime[j] = false; } } return(prime); } int main() { int M, N; int dp[10001]; fill_n(dp, 10001, -114514); cin >> M >> N; dp[M] = 0; while(N--) { int C; cin >> C; for(int j = M; j >= C; j--) { dp[j - C] = max(dp[j - C], dp[j] + 1); } } vector< bool > isprime = get_prime(M); int ret1 = 0, ret2 = 0; for(int i = 0; i <= M; i++) { if(isprime[i]) ret1 += max(0, dp[i]); ret2 = max(ret2, dp[i]); } cout << ret1 + ret2 << endl; }