import java.util.Arrays;
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int m = sc.nextInt();
		boolean clash[] = new boolean[n + 1];
		Arrays.fill(clash, true);

		for (int i = 0; i < m; i++) clash[sc.nextInt()] = false;

		int dp[] = new int[n + 1];
		dp[0] = 1;
		for (int i = 0; i < n; i++) {
			for (int j = i + 1; j <= Math.min(i + 2, n); j++) {
				if (clash[j]) {
					dp[j] += dp[i];
					dp[j] %= 1000000007;
				}
			}
		}

		System.out.println(dp[n]);

		sc.close();

	}

} import java.util.Arrays; Arrays java.util import java.util.Scanner; Scanner java.util public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int m = sc.nextInt();
		boolean clash[] = new boolean[n + 1];
		Arrays.fill(clash, true);

		for (int i = 0; i < m; i++) clash[sc.nextInt()] = false;

		int dp[] = new int[n + 1];
		dp[0] = 1;
		for (int i = 0; i < n; i++) {
			for (int j = i + 1; j <= Math.min(i + 2, n); j++) {
				if (clash[j]) {
					dp[j] += dp[i];
					dp[j] %= 1000000007;
				}
			}
		}

		System.out.println(dp[n]);

		sc.close();

	}

} Main public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int m = sc.nextInt();
		boolean clash[] = new boolean[n + 1];
		Arrays.fill(clash, true);

		for (int i = 0; i < m; i++) clash[sc.nextInt()] = false;

		int dp[] = new int[n + 1];
		dp[0] = 1;
		for (int i = 0; i < n; i++) {
			for (int j = i + 1; j <= Math.min(i + 2, n); j++) {
				if (clash[j]) {
					dp[j] += dp[i];
					dp[j] %= 1000000007;
				}
			}
		}

		System.out.println(dp[n]);

		sc.close();

	} main {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int m = sc.nextInt();
		boolean clash[] = new boolean[n + 1];
		Arrays.fill(clash, true);

		for (int i = 0; i < m; i++) clash[sc.nextInt()] = false;

		int dp[] = new int[n + 1];
		dp[0] = 1;
		for (int i = 0; i < n; i++) {
			for (int j = i + 1; j <= Math.min(i + 2, n); j++) {
				if (clash[j]) {
					dp[j] += dp[i];
					dp[j] %= 1000000007;
				}
			}
		}

		System.out.println(dp[n]);

		sc.close();

	} Scanner sc = new Scanner(System.in); sc new Scanner(System.in) int n = sc.nextInt(); n sc.nextInt() sc.nextInt sc int m = sc.nextInt(); m sc.nextInt() sc.nextInt sc boolean clash[] = new boolean[n + 1]; clash new boolean[n + 1] n + 1 n 1 Arrays.fill(clash, true) Arrays.fill Arrays clash true for (int i = 0; i < m; i++) clash[sc.nextInt()] = false; int i = 0; int i = 0; i 0 i < m i m i++ i++ i clash[sc.nextInt()] = false; clash[sc.nextInt()] = false clash[sc.nextInt()] clash sc.nextInt() sc.nextInt sc false int dp[] = new int[n + 1]; dp new int[n + 1] n + 1 n 1 dp[0] = 1 dp[0] dp 0 1 for (int i = 0; i < n; i++) {
			for (int j = i + 1; j <= Math.min(i + 2, n); j++) {
				if (clash[j]) {
					dp[j] += dp[i];
					dp[j] %= 1000000007;
				}
			}
		} int i = 0; int i = 0; i 0 i < n i n i++ i++ i {
			for (int j = i + 1; j <= Math.min(i + 2, n); j++) {
				if (clash[j]) {
					dp[j] += dp[i];
					dp[j] %= 1000000007;
				}
			}
		} {
			for (int j = i + 1; j <= Math.min(i + 2, n); j++) {
				if (clash[j]) {
					dp[j] += dp[i];
					dp[j] %= 1000000007;
				}
			}
		} for (int j = i + 1; j <= Math.min(i + 2, n); j++) {
				if (clash[j]) {
					dp[j] += dp[i];
					dp[j] %= 1000000007;
				}
			} int j = i + 1; int j = i + 1; j i + 1 i 1 j <= Math.min(i + 2, n) j Math.min(i + 2, n) Math.min Math i + 2 i 2 n j++ j++ j {
				if (clash[j]) {
					dp[j] += dp[i];
					dp[j] %= 1000000007;
				}
			} {
				if (clash[j]) {
					dp[j] += dp[i];
					dp[j] %= 1000000007;
				}
			} if (clash[j]) {
					dp[j] += dp[i];
					dp[j] %= 1000000007;
				} clash[j] clash j {
					dp[j] += dp[i];
					dp[j] %= 1000000007;
				} dp[j] += dp[i] dp[j] dp j dp[i] dp i dp[j] %= 1000000007 dp[j] dp j 1000000007 System.out.println(dp[n]) System.out.println System.out System System.out dp[n] dp n sc.close() sc.close sc String[] args args public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int m = sc.nextInt();
		boolean clash[] = new boolean[n + 1];
		Arrays.fill(clash, true);

		for (int i = 0; i < m; i++) clash[sc.nextInt()] = false;

		int dp[] = new int[n + 1];
		dp[0] = 1;
		for (int i = 0; i < n; i++) {
			for (int j = i + 1; j <= Math.min(i + 2, n); j++) {
				if (clash[j]) {
					dp[j] += dp[i];
					dp[j] %= 1000000007;
				}
			}
		}

		System.out.println(dp[n]);

		sc.close();

	}

} public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int m = sc.nextInt();
		boolean clash[] = new boolean[n + 1];
		Arrays.fill(clash, true);

		for (int i = 0; i < m; i++) clash[sc.nextInt()] = false;

		int dp[] = new int[n + 1];
		dp[0] = 1;
		for (int i = 0; i < n; i++) {
			for (int j = i + 1; j <= Math.min(i + 2, n); j++) {
				if (clash[j]) {
					dp[j] += dp[i];
					dp[j] %= 1000000007;
				}
			}
		}

		System.out.println(dp[n]);

		sc.close();

	}

} Main
import java.util.Arrays;
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int m = sc.nextInt();
		boolean clash[] = new boolean[n + 1];
		Arrays.fill(clash, true);

		for (int i = 0; i < m; i++) clash[sc.nextInt()] = false;

		int dp[] = new int[n + 1];
		dp[0] = 1;
		for (int i = 0; i < n; i++) {
			for (int j = i + 1; j <= Math.min(i + 2, n); j++) {
				if (clash[j]) {
					dp[j] += dp[i];
					dp[j] %= 1000000007;
				}
			}
		}

		System.out.println(dp[n]);

		sc.close();

	}

}
