#include #define REP(i, n) for (int i = 0; (i) < (int)(n); ++ (i)) #define REP3(i, m, n) for (int i = (m); (i) < (int)(n); ++ (i)) using namespace std; template inline void chmin(T & a, T const & b) { a = min(a, b); } int solve(int total, int n, vector const & t) { vector pred(1 << n); REP (s, 1 << n) { int sum_t = 0; REP (i, n) if (s & (1 << i)) { sum_t += t[i]; } pred[s] = sum_t <= total; } vector dp(1 << n, INT_MAX); dp[0] = 0; REP3 (cur, 1, 1 << n) { for (int prv = 0; ; prv = (prv - cur) & cur) { if (not pred[cur ^ prv]) continue; chmin(dp[cur], dp[prv] + 1); if (prv == cur) break; } } return dp[(1 << n) - 1]; } int main() { int total, n; cin >> total >> n; vector t(n); REP (i, n) cin >> t[i]; cout << solve(total, n, t) << endl; return 0; }