#include <bits/stdc++.h> using namespace std; const int N = 1010; int w[N]; // 价格 int f[N][N]; // 前i张邮票凑成j分的最小张数 // f[0-n][0] = 0; // f[0][1-m] int main(){ int m; //总值 int n; // 邮票数 cin >> m >> n; memset(f, 0x3f, sizeof(f)); for (int i=1; i<=n; i++){ cin >> w[i]; } for (int i=0; i<=n; i++){ f[i][0] = 0; } for (int i=1; i<=n; i++){ for (int j=1; j<=m; j++){ if (j < w[i]){ f[i][j] = f[i-1][j]; } else{ f[i][j] = min(f[i-1][j], f[i-1][j-w[i]] + 1); } } } if (f[n][m] == 0x3f3f3f3f){ // puts("0"); puts("0"); } else{ printf("%d\n", f[n][m]); } return 0; }