#include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long ll; int main() { int T; cin >> T; int N; cin >> N; vector times(N); for (int i = 0; i < N; ++i) { cin >> times[i]; } int L = 1 << N; int dp[L][N + 2]; memset(dp, 0, sizeof(dp)); for (int mask = 1; mask < L; ++mask) { for (int i = 0; i <= N; ++i) { dp[mask][i] = T * N + 1; } } for (int mask = 1; mask < L; ++mask) { for (int i = 0; i < N; ++i) { if (mask >> i & 1) { for (int j = 0; j <= N; ++j) { int nmask = mask ^ (1 << i); dp[mask][j] = min(dp[mask][j], dp[nmask][j] + times[i]); if (dp[mask][j] <= T) { dp[mask][j + 1] = 0; } } } } } for (int i = 0; i <= N; ++i) { if (!dp[L - 1][i]) { cout << i << endl; break; } } return 0; }