#include <iostream>
#include <algorithm>
using namespace std;
const int N(30009);
int data[N]={0};
int comp(const void *x,const void *y)
{
return *(int *)x-*(int *)y;
}
int main()
{
int w,n,s(1),ans(0);
cin>>w>>n;
for(int i=1;i<=n;i++)
cin>>data[i];
qsort(data+1,n,sizeof(int),comp);
for(int i=n;i>=s;i--)
{
if(data[i]+data[s]<=w)
s++;
ans++;
}
cout<<ans<<endl;
return 0;
}
/**************************************************************
Problem: 2269
User: admin
Language: C++
Result: Accepted
Time:70 ms
Memory:2380 kb
****************************************************************/