#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
****************************************************************/