//icpc2010dC test using InformationScience2008[3] ite()
a[100],b[100000],N;
void ite(n){
	int m,k,l,i;
	b[0] = 0;
	for(m=1;m<=n;m++){
		i = 0;
		k = l = -1;
		for(i=0;i<N;i++){
			if(m >= a[i] && b[m-a[i]] >= 0 && (k < 0 || b[m-a[i]] + 1 < k))
				k = b[m-a[i]] + 1;
		}
		b[m] = k;
	}
}

main(){
	int C,i=0;
	scanf("%d%d",&C,&N);
	for(;i<N;i++)scanf("%d",a+i);
	ite(C);
	printf("%d\n",b[C]?:-1);
	exit(0);
}