#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;
}