#### Registered Users Only

Please login to utilize this feature.

Do note that this website only supports submissions in C++.

### typicalstairs

### Problem Statement

There is a staircase with `N` steps. Takahashi is now standing at the foot of the stairs, that is, on the `0`-th step.
He can climb up one or two steps at a time.

However, the treads of the `a _{1}`-th,

`a`-th,

_{2}`a`-th,

_{3}`\ldots`,

`a`-th steps are broken, so it is dangerous to set foot on those steps.

_{M}How many are there to climb up to the top step, that is, the `N`-th step, without setting foot on the broken steps?
Find the count modulo `1\ 000\ 000\ 007`.

### Constraints

`1 ≤ N ≤ 10`^{5}`0 ≤ M ≤ N-1``1 ≤ a`_{1}< a_{2}<`...``< a`_{M}≤ N-1

### Input

Input is given from Standard Input in the following format:

NMa_{1}a_{2}...a_{M}

### Output

Print the number of ways to climb up the stairs under the condition, modulo `1\ 000\ 000\ 007`.

### Sample Input 1

6 1 3

### Sample Output 1

4

There are four ways to climb up the stairs, as follows:

`0 \to 1 \to 2 \to 4 \to 5 \to 6``0 \to 1 \to 2 \to 4 \to 6``0 \to 2 \to 4 \to 5 \to 6``0 \to 2 \to 4 \to 6`

### Sample Input 2

10 2 4 5

### Sample Output 2

0

There may be no way to climb up the stairs without setting foot on the broken steps.

### Sample Input 3

100 5 1 23 45 67 89

### Sample Output 3

608200469

Be sure to print the count modulo `1\ 000\ 000\ 007`.

### Tags

### Subtasks and Limits

Subtask | Score | #TC | Time | Memory | Scoring |
---|---|---|---|---|---|

1 | 100 | 36 | 1s | 256MB | Minimum |

2 | 0 | 3 | 1s | 256MB | Minimum |

### Judge Compile Command

g++-7 ans.cpp -o typicalstairs -Wall -static -O2 -lm -m64 -s -w -std=gnu++17 -fmax-errors=512