#include<bits/stdc++.h>
using namespace std;
int n,m,a[200],s,ans; 
bool cmp(int x,int y){
//	if(x>y)return true;
//	else return false;
	return x>y; 
}
int main(){
	cin>>m>>n;
//  n个师傅
//  m个零件
	for(int i=1;i<=n;i++) {
		cin>>a[i];
		s=s+a[i];
	}
	if(s<m) cout<<"NO";
	else{
		sort(a+1,a+1+n,cmp);
		//sort  分类 快速排序 ,开始,结束,条件,按什么要求进行从小到大或从大到小排序 
		for(int i=1;i<=n;i++){
			ans=ans+a[i];
			if(ans>=m){
				cout<<i;
				break;
			}
		}
		
	}
//	for(int i=1;i<=n;i++) cout<<a[i]<<" ";
//  第一件事情:判断如果安排所有的师傅都参与加工也不能在一天内完成任务,
//  请输出“NO” 
//  第二件事情:如果可以完成,要求最少个师傅,优先请加工多的师傅 
  
	return 0;
}

/**************************************************************
	Problem: 1326
	User: hulaoshi
	Language: C++
	Result: Accepted
	Time:31 ms
	Memory:2076 kb
****************************************************************/