import sys def can_assign(k, tasks, T): tasks.sort(reverse=True) n = len(tasks) times = [0] * k def backtrack(index): if index == n: return True current_t = tasks[index] for i in range(k): if i > 0 and times[i] == times[i-1]: continue if times[i] + current_t <= T: times[i] += current_t if backtrack(index + 1): return True times[i] -= current_t if times[i] == 0: break return False return backtrack(0) def main(): T = int(sys.stdin.readline()) N = int(sys.stdin.readline()) t = [int(sys.stdin.readline()) for _ in range(N)] sum_t = sum(t) min_k = (sum_t + T - 1) // T for k in range(min_k, N + 1): if can_assign(k, t, T): print(k) return print(N) if __name__ == "__main__": main()