using System; namespace No005_数字のブロック { class Program { static private int l; static private int n; static private int max = 0; static public void Main(string[] args) { l = int.Parse(Console.ReadLine()); n = int.Parse(Console.ReadLine()); string[] input = Console.ReadLine().Split(' '); int[] w = new int[n]; for (int i = 0; i < n; i++) w[i] = int.Parse(input[i]); Sort(ref w); for (int i = 0; i < n; i++) Combination(w, i, 0, 0); Console.WriteLine(max); } static private void Combination(int[] data, int level, int sum, int count) { if (level < data.Length) { sum += data[level]; if (sum <= l) { count++; Combination(data, level + 1, sum, count); } } if (max < count) max = count; } static private void Sort(ref int[] data) { for (int i = 0; i < data.Length - 1; i++) for (int j = i; j < data.Length; j++) if (data[i] > data[j]) Swap(ref data[i], ref data[j]); } static private void Swap(ref int a, ref int b) { int temp = a; a = b; b = temp; } } }