#include<stdio.h>
int n,m;
int c[20],array[50001];
void bubblesort(void);
int min(int, int);
void survey(int,int *);

int main(void){
    int i,v;
    scanf("%d%d",&n,&m);
    for(i = 0;i < m;i++){
        scanf("%d",&c[i]);
    }
    array[0] = 0;
    bubblesort();
    v = 0;
    printf("%d\n",array[n]);
    return 0;
}

void bubblesort(void){
    int i,j,k;
    for(i = 0;i < m - 1;i++){
        for(j = i + 1;j < m;j++){
            if(c[i] > c[j]){
                k = c[j]; c[j] = c[i]; c[i] = k;
            }
        }
    }
    return;
}

int min(int p,int q){
    if(p < q){
        return p;
    }else{
        return q;
    }
}

void survey(int p, int *q){
    if(p >= c[*q + 1] && *q < m - 1){
        (*q)++;
    }
    array[p] = min(array[p - c[*q]] + 1,array[p - 1] + 1);
}