#include #include #include using namespace std; const int INF = (int)1e9 + 7; template inline bool chmin(t& a, t b) { if (a > b) { a = b; return 1; } return 0; } int main() { int T, n; cin >> T >> n; vector t(n); for (auto &ti: t) cin >> ti; vector> dp(1 << n, vector(n + 1, INF)); dp[0].assign(n + 1, 0); for (int mask = 0; mask < 1 << n; mask++) { for (int k = 0; k <= n; k++) { if (k && dp[mask][k - 1] <= T) { dp[mask][k] = 0; continue; } for (int i = 0; i < n; i++) if (mask >> i & 1) { chmin(dp[mask][k], dp[mask ^ (1 << i)][k] + t[i]); } } } int k = 0; while (dp[(1 << n) - 1][k]) k++; cout << k << endl; return 0; }