#include #include #include using namespace std; int dp[10001]; bool prime[10001]; int main(){ int m, n; cin >> m >> n; vector c(n); for(int &i : c){ cin >> i; } for(int i = 2; i <= 10000; i++){ prime[i] = true; } vector p; for(int i = 2; i <= m; i++){ if(prime[i]){ p.push_back(i); for(int j = i * 2; j <= m; j += i){ if(prime[j]) prime[j] = false; } } } dp[m] = 1; for(int i : c){ for(int j = m; j >= i; j--){ if(dp[j] > 0){ dp[j - i] = max(dp[j] + 1, dp[j - i]); } } } int ans = *max_element(dp, dp + m) - 1; for(int i : p){ ans += max(0, dp[i] - 1); } cout << ans << endl; return 0; }