#include using namespace std; template using vec = vector; template using vvec = vec>; template using lqueue = priority_queue, greater>; template using gqueue = priority_queue, less>; int main() { int c, n; cin >> c >> n; vec a(n); for (auto &e : a) cin >> e; vec dist(c + 1, -1); queue que; dist[0] = 0; que.push(0); while (!que.empty()) { int vtx = que.front(); que.pop(); for (auto d : a) { int next = vtx + d; if (c < next || dist[next] != -1) continue; dist[next] = dist[vtx] + 1; que.push(next); } } cout << dist[c] << endl; }