import sys


def main():
    input = sys.stdin.buffer.readline
    n, m = map(int, input().split())
    c = [0] + list(map(int, input().split()))
    dp = [list(range(n + 1)) for _ in range(m + 1)]
    for i in range(1, m + 1):
        for j in range(n + 1):
            if j - c[i] >= 0:
                dp[i][j] = min(dp[i - 1][j], dp[i][j - c[i]] + 1)
            else:
                dp[i][j] = dp[i - 1][j]
    print(dp[m][n])


if __name__ == "__main__":
    main()
 import sys sys def main():
    input = sys.stdin.buffer.readline
    n, m = map(int, input().split())
    c = [0] + list(map(int, input().split()))
    dp = [list(range(n + 1)) for _ in range(m + 1)]
    for i in range(1, m + 1):
        for j in range(n + 1):
            if j - c[i] >= 0:
                dp[i][j] = min(dp[i - 1][j], dp[i][j - c[i]] + 1)
            else:
                dp[i][j] = dp[i - 1][j]
    print(dp[m][n]) main input = sys.stdin.buffer.readline input sys.stdin.buffer.readline sys.stdin.buffer sys.stdin sys stdin buffer readline n, m = map(int, input().split()) n map(int, input().split()) map int input().split() ().split () input split m c = [0] + list(map(int, input().split())) c [0] + list(map(int, input().split())) [0] 0 list(map(int, input().split())) list map(int, input().split()) map int input().split() ().split () input split list(range(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) list(range(n + 1)) list range(n + 1) range n + 1 n 1 dp = [list(range(n + 1)) for _ in range(m + 1)] dp [list(range(n + 1)) for _ in range(m + 1)] for i in range(1, m + 1):
        for j in range(n + 1):
            if j - c[i] >= 0:
                dp[i][j] = min(dp[i - 1][j], dp[i][j - c[i]] + 1)
            else:
                dp[i][j] = dp[i - 1][j]
     i range(1, m + 1) range 1 m + 1 m 1 for j in range(n + 1):
            if j - c[i] >= 0:
                dp[i][j] = min(dp[i - 1][j], dp[i][j - c[i]] + 1)
            else:
                dp[i][j] = dp[i - 1][j]
     j range(n + 1) range n + 1 n 1 if j - c[i] >= 0:
                dp[i][j] = min(dp[i - 1][j], dp[i][j - c[i]] + 1)
            else:
                dp[i][j] = dp[i - 1][j]
     j - c[i] >= 0 j - c[i] j c[i] c i 0 dp[i][j] = min(dp[i - 1][j], dp[i][j - c[i]] + 1) dp[i][j] [i] dp i j min(dp[i - 1][j], dp[i][j - c[i]] + 1) min dp[i - 1][j] [i - 1] dp i - 1 i 1 j 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] = dp[i - 1][j] dp[i][j] [i] dp i j dp[i - 1][j] [i - 1] dp i - 1 i 1 j print(dp[m][n]) print dp[m][n] [m] dp m n if __name__ == "__main__":
    main() __name__ == "__main__" __name__ "__main__" main() main def main():
    input = sys.stdin.buffer.readline
    n, m = map(int, input().split())
    c = [0] + list(map(int, input().split()))
    dp = [list(range(n + 1)) for _ in range(m + 1)]
    for i in range(1, m + 1):
        for j in range(n + 1):
            if j - c[i] >= 0:
                dp[i][j] = min(dp[i - 1][j], dp[i][j - c[i]] + 1)
            else:
                dp[i][j] = dp[i - 1][j]
    print(dp[m][n]) def main():
    input = sys.stdin.buffer.readline
    n, m = map(int, input().split())
    c = [0] + list(map(int, input().split()))
    dp = [list(range(n + 1)) for _ in range(m + 1)]
    for i in range(1, m + 1):
        for j in range(n + 1):
            if j - c[i] >= 0:
                dp[i][j] = min(dp[i - 1][j], dp[i][j - c[i]] + 1)
            else:
                dp[i][j] = dp[i - 1][j]
    print(dp[m][n]) main
import sys


def main():
    input = sys.stdin.buffer.readline
    n, m = map(int, input().split())
    c = [0] + list(map(int, input().split()))
    dp = [list(range(n + 1)) for _ in range(m + 1)]
    for i in range(1, m + 1):
        for j in range(n + 1):
            if j - c[i] >= 0:
                dp[i][j] = min(dp[i - 1][j], dp[i][j - c[i]] + 1)
            else:
                dp[i][j] = dp[i - 1][j]
    print(dp[m][n])


if __name__ == "__main__":
    main()

