#define _USE_MATH_DEFINES #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; const char INF = CHAR_MAX / 2; int main() { int t, n; cin >> t >> n; vector v(n); for(int i=0; i> v[i]; vector > dp(1<(t+1, INF)); dp[0][0] = 0; for(int i=0; i<(1< bs(i); for(int a=0; a<=t; ++a){ if(dp[i][a] == INF) continue; for(int x=0; x(dp[j][t-v[x]], dp[i][a] + 1); else dp[j][a-v[x]] = min(dp[j][a-v[x]], dp[i][a]); } } } int ans = *min_element(dp.back().begin(), dp.back().end()); cout << ans << endl; return 0; }