개업

N그릇을 만들어야 하고 웍 크기 목록이 주어질 때, 한 번에 웍 하나 또는 같은 크기 웍 두 개를 써서 정확히 N그릇을 채우는 최소 조리 횟수를 구한다.

보통5동적 계획법그리디구현수학면접 대비아직 제출이 없습니다시간 제한1초메모리 제한256 MB

문제

해빈이는 짜장면을 정말 좋아한다. 너무 좋아한 나머지 짜장면만 파는 중국집을 열었다. 해빈이는 양손잡이라서 웍(중국 냄비) 두 개를 동시에 잡고 한 번에 요리할 수 있다.

해빈이는 낭비를 싫어해서 웍을 언제나 가득 채워 쓴다. 한 번 요리할 때 웍을 하나만 쓰면 그 웍의 크기만큼, 두 개를 함께 쓰면 두 웍의 크기를 더한 만큼 짜장면이 정확히 나온다. 4그릇짜리 웍으로는 3그릇도 5그릇도 아닌 정확히 4그릇을 만든다. 동시에 쓰는 웍 두 개는 서로 다른 웍이어야 하므로, 크기가 cc인 웍을 두 개 가지고 있을 때만 한 번에 2c2c그릇을 만들 수 있다. 요리를 마친 웍은 다음 요리에 다시 쓸 수 있고, 몇 번이든 다시 쓸 수 있다.

주문은 정확히 NN그릇이고, 요리해서 나온 그릇 수의 합이 NN이 되어야 한다.

주문이 5그릇이고 웍의 크기가 1과 3이라면, 먼저 1그릇용 웍과 3그릇용 웍을 함께 써서 4그릇을 만들고 다음에 1그릇용 웍으로 1그릇을 만들어 두 번의 요리로 주문을 채운다.

주문 받은 그릇 수와 웍의 크기가 주어질 때, 모든 주문을 처리하는 데 필요한 최소 요리 횟수를 구하라.

입력

첫째 줄에 주문 받은 짜장면의 수 NN(1N100001 \le N \le 10\,000)과 웍의 개수 MM(1M1001 \le M \le 100)이 공백으로 구분되어 주어진다. 둘째 줄에 웍의 크기 S1,S2,,SMS_1, S_2, \dots, S_M(1SiN1 \le S_i \le N)이 공백으로 구분되어 주어진다. 같은 크기의 웍을 여러 개 가지고 있을 수 있다.

출력

모든 주문을 처리하는 데 필요한 최소 요리 횟수를 출력한다. 어떻게 해도 정확히 NN그릇을 만들 수 없으면 -1을 출력한다.

힌트

웍의 크기가 1과 3이고 주문이 6그릇이면, 3그릇용 웍으로 3그릇을 만드는 요리를 두 번 해서 두 번 만에 주문을 채울 수 있다.