INF = 10 ** 18
n, m = map(int, input().split())
c = list(map(int, input().split()))
dp = [INF] * (n + 1)
dp[0] = 0
for i in range(m):
    for j in range(c[i], n + 1):
        dp[j] = min(dp[j], dp[j - c[i]] + 1)

print(dp[n]) INF = 10 ** 18 INF 10 ** 18 10 18 n, m = map(int, input().split()) n map(int, input().split()) map int input().split() ().split () input split m c = list(map(int, input().split())) c list(map(int, input().split())) list map(int, input().split()) map int input().split() ().split () input split dp = [INF] * (n + 1) dp [INF] * (n + 1) [INF] INF n + 1 n 1 dp[0] = 0 dp[0] dp 0 0 for i in range(m):
    for j in range(c[i], n + 1):
        dp[j] = min(dp[j], dp[j - c[i]] + 1) i range(m) range m for j in range(c[i], n + 1):
        dp[j] = min(dp[j], dp[j - c[i]] + 1) j range(c[i], n + 1) range c[i] c i n + 1 n 1 dp[j] = min(dp[j], dp[j - c[i]] + 1) dp[j] dp j min(dp[j], dp[j - c[i]] + 1) min dp[j] dp j dp[j - c[i]] + 1 dp[j - c[i]] dp j - c[i] j c[i] c i 1 print(dp[n]) print dp[n] dp n n, m = map(int, input().split()) map(int, input().split()) n INF = 10 ** 18 10 ** 18 INF m = map(int, input().split()) map(int, input().split()) m dp = [INF] * (n + 1) [INF] * (n + 1) dp c = list(map(int, input().split())) list(map(int, input().split())) c
INF = 10 ** 18
n, m = map(int, input().split())
c = list(map(int, input().split()))
dp = [INF] * (n + 1)
dp[0] = 0
for i in range(m):
    for j in range(c[i], n + 1):
        dp[j] = min(dp[j], dp[j - c[i]] + 1)

print(dp[n])
