#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=1e6+10;
#define debug() cout<<"come on"<<'\n'
int a[N],n,v,c,ans;
bool vis[N];
void find(int k,int x){
x=v-x;
for(int i=k;i<=n;i++){
if(a[i]<=x&&!vis[i]){
c+=a[i];
find(i+1,v-x+a[i]);
}
}
ans++;
}
int ch(){
for(int i=n;i>=1;i--){
if(!vis[i])return i;
}
return 0;
}
signed main(){
cin>>v;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
sort(a+1,a+1+n,greater<int>);
for(int i=1;i<=n;i++){
if(vis[i])continue;
if(a[i]+c<=v){
c+=a[i];
vis[i]=true;
int x=ch();
if(x==0){
ans++,c=0;
break;
}
else{
if(c+a[x]>v){
ans++,c=0;
}
else{
find(i+1,c);
}
}
}
}
cout<<ans;
return 0;
}