INF = 1 << 60 T = int(input()) N = int(input()) ts = [int(input()) for _ in range(N)] bset = set() for i in range(1 << N): t = sum(ts[j] for j in range(N) if i & (1 << j)) if t <= T: bset.add(i) dp = [INF] * (1 << N) dp[0] = 0 bit_all = (1 << N) - 1 for i in range(1 << N): if dp[i] == INF: continue mask = ~i & bit_all b = mask while b: if b in bset: ni = i | b dp[ni] = min(dp[ni], dp[i] + 1) b = (b-1) & mask ans = dp[bit_all] print(ans)