n, m = map(int, input().split())
c = list(map(int, input().split()))
INF = 10**9

# i番目までのコインを使ってj円を支払うときの最小枚数
dp = [[INF] * (n+1) for _ in range(m+1)]
dp[0][0] = 0

for i in range(m):
    for j in range(n+1):
        if j >= c[i]:
            dp[i+1][j] = min(dp[i+1][j-c[i]] + 1, dp[i][j-c[i]] + 1, dp[i][j])
        else:
            dp[i+1][j] = dp[i][j]
    
print(dp[m][n]) 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 INF = 10**9 INF 10**9 10 9 [INF] * (n+1) for _ in range(m+1) for _ in range(m+1) _ range(m+1) range m+1 m 1 for _ in range(m+1) [INF] * (n+1) [INF] INF n+1 n 1 dp = [[INF] * (n+1) for _ in range(m+1)] dp [[INF] * (n+1) for _ in range(m+1)] dp[0][0] = 0 dp[0][0] [0] dp 0 0 0 for i in range(m):
    for j in range(n+1):
        if j >= c[i]:
            dp[i+1][j] = min(dp[i+1][j-c[i]] + 1, dp[i][j-c[i]] + 1, dp[i][j])
        else:
            dp[i+1][j] = dp[i][j]
     i range(m) range m for j in range(n+1):
        if j >= c[i]:
            dp[i+1][j] = min(dp[i+1][j-c[i]] + 1, dp[i][j-c[i]] + 1, dp[i][j])
        else:
            dp[i+1][j] = dp[i][j]
     j range(n+1) range n+1 n 1 if j >= c[i]:
            dp[i+1][j] = min(dp[i+1][j-c[i]] + 1, dp[i][j-c[i]] + 1, dp[i][j])
        else:
            dp[i+1][j] = dp[i][j]
     j >= c[i] j c[i] c i dp[i+1][j] = min(dp[i+1][j-c[i]] + 1, dp[i][j-c[i]] + 1, dp[i][j]) dp[i+1][j] [i+1] dp i+1 i 1 j min(dp[i+1][j-c[i]] + 1, dp[i][j-c[i]] + 1, dp[i][j]) min dp[i+1][j-c[i]] + 1 dp[i+1][j-c[i]] [i+1] dp i+1 i 1 j-c[i] j c[i] c i 1 dp[i][j-c[i]] + 1 dp[i][j-c[i]] [i] dp i j-c[i] j c[i] c i 1 dp[i][j] [i] dp i j dp[i+1][j] = dp[i][j] dp[i+1][j] [i+1] dp i+1 i 1 j dp[i][j] [i] dp i j print(dp[m][n]) print dp[m][n] [m] dp m n m = map(int, input().split()) map(int, input().split()) m dp = [[INF] * (n+1) for _ in range(m+1)] [[INF] * (n+1) for _ in range(m+1)] dp n, m = map(int, input().split()) map(int, input().split()) n INF = 10**9 10**9 INF c = list(map(int, input().split())) list(map(int, input().split())) c
n, m = map(int, input().split())
c = list(map(int, input().split()))
INF = 10**9

# i番目までのコインを使ってj円を支払うときの最小枚数
dp = [[INF] * (n+1) for _ in range(m+1)]
dp[0][0] = 0

for i in range(m):
    for j in range(n+1):
        if j >= c[i]:
            dp[i+1][j] = min(dp[i+1][j-c[i]] + 1, dp[i][j-c[i]] + 1, dp[i][j])
        else:
            dp[i+1][j] = dp[i][j]
    
print(dp[m][n])
