#include #include using namespace std; const int N = 19; int t, n, a[N], dp[1 << N], sum[1 << N]; int main() { // freopen("clone.in", "r", stdin); // freopen("clone.out", "w", stdout); scanf("%d%d", &t, &n); for (int i = 1; i <= n; ++i) scanf("%d", &a[i]); for (int i = 0; i < 1 << n; ++i) { int pos = __builtin_ctz(i); sum[i] = sum[i ^ (1 << pos)] + a[pos + 1]; } memset(dp, 0x3f, sizeof(dp)); dp[0] = 0; for (int i = 1; i < 1 << n; ++i) { if (sum[i] <= t) { dp[i] = 1; continue; } for (int sub = i; sub; sub = i & (sub - 1)) { if (sum[sub] > t) continue; dp[i] = min(dp[i], dp[i ^ sub] + 1); } } printf("%d\n", dp[(1 << n) - 1]); return 0; }