#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: fuyijun
Language: C++
Result: Accepted
Time:14 ms
Memory:2076 kb
****************************************************************/