#include #include #include using namespace std; using P = pair; int main(){ int m; cin >> m; int n; cin >> n; vector c(n); for(auto &it: c) cin >> it; vector is_prime(10010, true); is_prime[0] = is_prime[1] = false; for(int i = 2; i*i < is_prime.size(); i++){ if(!is_prime[i]) continue; for(int j = 2; i*j < is_prime.size(); j++) is_prime[i*j] = false; } vector dp(10010, -(1 << 30)); dp[0] = 0; for(auto &it: c){ for(int j = 0; j < dp.size(); j++){ if(j-it < 0 || dp[j-it] < 0) continue; dp[j] = max(dp[j], dp[j-it]+1); } } int mx = 0; int ans = 0; for(int i = 1; i <= m; i++){ if(dp[i] < 0) continue; if(is_prime[m-i]) ans += dp[i]; mx = max(mx, dp[i]); } cout << ans+mx << endl; return 0; }