#include <iostream>
using namespace std;
int LeastBox(int V, int N, int * objects)
{
if (N < 1)
{
return 0;
}
if (N < 2)
{
return 1;
}
int box = 0;
if (objects[0] < objects[1])
{
int tmp = objects[1];
objects[1] = objects[0];
objects[0] = tmp;
}
for (int i = 2; i < N; i++)
{
for (int j = i; j > 0; j--)
{
if (objects[j] > objects[j - 1])
{
int tmp = objects[j];
objects[j] = objects[j - 1];
objects[j - 1] = tmp;
}
else
{
break;
}
}
}
int i = 0;
int j = N - 1;
while (i < j)
{
if (objects[i] + objects[j] <= V)
{
i++;
j--;
box++;
continue;
}
else
{
i++;
box++;
continue;
}
}
return box;
}
int main()
{
int V = 0;
int N = 0;
int * objects = NULL;
cin >> V;
cin >> N;
objects = new int[N];
for (int i = 0; i < N; i++)
{
cin >> objects[i];
}
cout <<LeastBox(V, N, objects) << endl;
delete [] objects;
return 0;
}
using namespace std;
int LeastBox(int V, int N, int * objects)
{
if (N < 1)
{
return 0;
}
if (N < 2)
{
return 1;
}
int box = 0;
if (objects[0] < objects[1])
{
int tmp = objects[1];
objects[1] = objects[0];
objects[0] = tmp;
}
for (int i = 2; i < N; i++)
{
for (int j = i; j > 0; j--)
{
if (objects[j] > objects[j - 1])
{
int tmp = objects[j];
objects[j] = objects[j - 1];
objects[j - 1] = tmp;
}
else
{
break;
}
}
}
int i = 0;
int j = N - 1;
while (i < j)
{
if (objects[i] + objects[j] <= V)
{
i++;
j--;
box++;
continue;
}
else
{
i++;
box++;
continue;
}
}
return box;
}
int main()
{
int V = 0;
int N = 0;
int * objects = NULL;
cin >> V;
cin >> N;
objects = new int[N];
for (int i = 0; i < N; i++)
{
cin >> objects[i];
}
cout <<LeastBox(V, N, objects) << endl;
delete [] objects;
return 0;
}