#include #include #include #include #include #include using namespace std; typedef long long ll; const int INF = 1000000; int dp[20000]; bool isPrime(int n) { if(n < 2) return false; for(int i = 2; i * i <= n; i++) { if(n % i == 0) return false; } return true; } int main() { cin.tie(0); ios::sync_with_stdio(false); int M, N; cin >> M >> N; fill(dp, dp + M + 1000, -INF); dp[0] = 0; int C[20]; for(int i = 0; i < N; i++) { cin >> C[i]; for(int j = 0; j <= M; j++) { if(dp[j] != -INF) dp[j + C[i]] = max(dp[j + C[i]], dp[j] + 1); } } ll ans = 0; for(int i = 1; i < M; i++) { int rem = M - i; if(isPrime(rem) && dp[i] != -INF) { ans += dp[i]; dp[i] = -INF; } } ans += *max_element(dp, dp + M + 1); cout << ans << endl; }