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