#include #include #include #include #include #include #include using namespace std; using ll = long long; int main() { int T, n; cin >> T >> n; vector t(n); for (int i = 0; i < n; i++) { cin >> t[i]; } vector> dp(1 << n, vector(n + 1)); for (int k = 0; k < 1 << n; k++) { int x = 0; for (int i = 0; i < n; i++) { if (k & 1 << i) { x += t[i]; } } dp[k][0] = x; for (int j = 1; j <= n; j++) { if (dp[k][j - 1] <= T) { dp[k][j] = 0; continue; } int x = 1 << 30; for (int i = 0; i < n; i++) { if (k & 1 << i) { x = min(x, dp[k ^ 1 << i][j] + t[i]); } } dp[k][j] = x; } } for (int j = 0; j <= n; j++) { if (dp[(1 << n) - 1][j] == 0) { cout << j << endl; break; } } return 0; }