#include <bits/stdc++.h>
#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 <class T> inline void chmin(T & a, T const & b) { a = min(a, b); }

int solve(int total, int n, vector<int> const & t) {
    vector<bool> 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<int> 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<int> t(n);
    REP (i, n) cin >> t[i];
    cout << solve(total, n, t) << endl;
    return 0;
}