#include typedef long long i64; using std::cout; using std::endl; using std::cin; int main(){ int T, n; cin >> T >> n; std::vector t(n); for(int i = 0; i < n; i++) cin >> t[i]; std::vector vec; std::vector li(1 << n, false); for(int i = 1; i < (1 << n); i++) { int tmp = 0; for(int j = 0; j < n; j++) if((i >> j) & 1) tmp += t[j]; if(tmp > T) continue; vec.push_back(i); li[i] = true; } if(li[(1 << n) - 1]) { cout << 1 << endl; return 0; } std::vector dp(1 << n, 1 << 30); dp[0] = 0; for(int i = 0; i < (1 << n); i++) { for(auto bit : vec) { if(i & bit) continue; dp[i | bit] = std::min(dp[i | bit], dp[i] + 1); } } cout << dp[(1 << n) - 1] << endl; return 0; }