## Goal

Given a non-negative **amount** `N` and a **set of **`S` coins of positive **values** `Vi`, return the **number of ways** to reach the required amount using the coins.

NB : You have an unlimited number of each coin at your disposal.

For example, given `N`** = 10**, `S`** = 2** and the set of values `V1`** = {1, 5} **, you should return **3**. Indeed, there are 3 ways to sum coins of values {1, 5} up to 10 : 1*10, 5*2 and 1*5 + 5*1.
Input

**Line 1 :** A non-negative integer `N` for the target amount.

**Line 2 :** A positive integer `S` for the number of possible values coins.

**Line 3 :** `S` space-separated non-negative integer `Vi` for the value of the i-th coin.

Output

An integer representing the number of ways to sum the coins up to `N` (0 if there is no way to reach the target amount).

Constraints

0 <= `N` <= 2000

0 < `S` <= 10

0 < `Vi` <= 500