#include <iostream>
using namespace std;
int N, M, cnt = 0, mincount = 1e9, flag;
void dg(int cnt, int value, int v[], int k) {
if (value == M) {
if (cnt < mincount)mincount = cnt;
flag = 1;
return;
}
for (int i =k; i < N; i++) {
if (value + v[i] <= M) {
dg(cnt + 1, value + v[i], v, i+1);
}
}
}
int main() {
cin >> M >> N;
int v[N + 10]; //第i张邮票的面额
for (int i = 0; i < N; i++) {
cin >> v[i];
}
dg(0, 0, v, 0);
if (flag == 1) {
cout << mincount << endl;
} else {
cout << 0 << endl;
}
}
// 64 位输出请用 printf("%lld")