/*
4 20
1 2 5 10
5[1,2,2,5,10]
已知前i-1个硬币 使得能凑得前s面值的硬币
1~a(i-1) 1~s
Kai + s>= a(i+1) -1 :从a(i+1)价格开始就可以用 a(i+1)面值了 就可能用面值大的硬币
*/
#include <iostream>
#include <algorithm>
using namespace std;
const int N = 110;
int n, m;
int c[N];
int main()
{
cin >> m >> n;
for (int i = 0; i < n; i ++ ) cin >> c[i];
sort(c, c + n);
while (n > 0 && c[n - 1] > m) n -- ;
c[n] = m + 1;
if (c[0] != 1) puts("-1");
else
{
int res = 0;
//用全前n-1个硬币 使得总和到a[n]
for (int i = 0, s = 0; i < n; i ++ )
{
int k = (c[i + 1] - 1 - s + c[i] - 1) / c[i];
res += k;
s += k * c[i];
}
cout << res << endl;
}
return 0;
}