//https://ncode.syosetu.com/n4830bu/247/ #include using namespace std; int main() { int C, N; cin >> C >> N; vector A(N); for (auto&& a : A) { cin >> a; } const int INF = 1e7; vector dp(C + 1, INF); dp[0] = 0; for (auto&& a : A) { for (int i = 0; i < C + 1; i++) { int nxt = i + a; if (nxt > C) break; dp[nxt] = min(dp[nxt], dp[i] + 1); } } cout << (dp[C] == INF ? -1 : dp[C]) << endl; }