4000088 - 购物

通过次数

3

提交次数

3

时间限制 : 1 秒
内存限制 : 128 MB

你就要去购物了,现在你手上有 N 种不同面值的硬币,每种硬币有无限多个。为了方便购物,你希望带尽量少的硬币,但要能组合出 1X 之间的任意值。

输入

第一行两个数 X\ (1\le X \le 1000)N\ (1\le N \le 10)

接下来 N 个数,表示每种硬币的面值,币值范围在 [1,1000] 内。

输出

最少需要携带的硬币个数,如果无解输出 -1

样例

输入

20 4
1 2 5 10

输出

5

提示

先对币值排序,当前已经凑得 s 以内所有的正整数,则下一个加入的硬币最大为 s+1(否则不能凑得 s+1),并且越大越好。第一次肯定只能放进价值为 1 的硬币,如果没有就说明无解。