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

public class Main {

	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		int N = in.nextInt();
		int M = in.nextInt();
		boolean[] issafe = new boolean[N + 1];
		Arrays.fill(issafe, true);
		for (int i = 0; i < M; i++) {
			issafe[in.nextInt()] = false;
		}
		int[] dp = new int[N + 1];
		dp[0] = 1;
		if (issafe[1]) {
			dp[1] = 1;
		}
		for (int i = 2; i <= N; i++) {
			if (issafe[i - 1]) {
				dp[i] += dp[i - 1];
			}
			if (issafe[i - 2]) {
				dp[i] += dp[i - 2];
			}
			dp[i] %= 1000000007;
		}
		System.out.println(dp[N]);
		in.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 in = new Scanner(System.in);
		int N = in.nextInt();
		int M = in.nextInt();
		boolean[] issafe = new boolean[N + 1];
		Arrays.fill(issafe, true);
		for (int i = 0; i < M; i++) {
			issafe[in.nextInt()] = false;
		}
		int[] dp = new int[N + 1];
		dp[0] = 1;
		if (issafe[1]) {
			dp[1] = 1;
		}
		for (int i = 2; i <= N; i++) {
			if (issafe[i - 1]) {
				dp[i] += dp[i - 1];
			}
			if (issafe[i - 2]) {
				dp[i] += dp[i - 2];
			}
			dp[i] %= 1000000007;
		}
		System.out.println(dp[N]);
		in.close();
	}
} Main public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		int N = in.nextInt();
		int M = in.nextInt();
		boolean[] issafe = new boolean[N + 1];
		Arrays.fill(issafe, true);
		for (int i = 0; i < M; i++) {
			issafe[in.nextInt()] = false;
		}
		int[] dp = new int[N + 1];
		dp[0] = 1;
		if (issafe[1]) {
			dp[1] = 1;
		}
		for (int i = 2; i <= N; i++) {
			if (issafe[i - 1]) {
				dp[i] += dp[i - 1];
			}
			if (issafe[i - 2]) {
				dp[i] += dp[i - 2];
			}
			dp[i] %= 1000000007;
		}
		System.out.println(dp[N]);
		in.close();
	} main {
		Scanner in = new Scanner(System.in);
		int N = in.nextInt();
		int M = in.nextInt();
		boolean[] issafe = new boolean[N + 1];
		Arrays.fill(issafe, true);
		for (int i = 0; i < M; i++) {
			issafe[in.nextInt()] = false;
		}
		int[] dp = new int[N + 1];
		dp[0] = 1;
		if (issafe[1]) {
			dp[1] = 1;
		}
		for (int i = 2; i <= N; i++) {
			if (issafe[i - 1]) {
				dp[i] += dp[i - 1];
			}
			if (issafe[i - 2]) {
				dp[i] += dp[i - 2];
			}
			dp[i] %= 1000000007;
		}
		System.out.println(dp[N]);
		in.close();
	} Scanner in = new Scanner(System.in); in new Scanner(System.in) int N = in.nextInt(); N in.nextInt() in.nextInt in int M = in.nextInt(); M in.nextInt() in.nextInt in boolean[] issafe = new boolean[N + 1]; issafe new boolean[N + 1] N + 1 N 1 Arrays.fill(issafe, true) Arrays.fill Arrays issafe true for (int i = 0; i < M; i++) {
			issafe[in.nextInt()] = false;
		} int i = 0; int i = 0; i 0 i < M i M i++ i++ i {
			issafe[in.nextInt()] = false;
		} {
			issafe[in.nextInt()] = false;
		} issafe[in.nextInt()] = false issafe[in.nextInt()] issafe in.nextInt() in.nextInt in false int[] dp = new int[N + 1]; dp new int[N + 1] N + 1 N 1 dp[0] = 1 dp[0] dp 0 1 if (issafe[1]) {
			dp[1] = 1;
		} issafe[1] issafe 1 {
			dp[1] = 1;
		} dp[1] = 1 dp[1] dp 1 1 for (int i = 2; i <= N; i++) {
			if (issafe[i - 1]) {
				dp[i] += dp[i - 1];
			}
			if (issafe[i - 2]) {
				dp[i] += dp[i - 2];
			}
			dp[i] %= 1000000007;
		} int i = 2; int i = 2; i 2 i <= N i N i++ i++ i {
			if (issafe[i - 1]) {
				dp[i] += dp[i - 1];
			}
			if (issafe[i - 2]) {
				dp[i] += dp[i - 2];
			}
			dp[i] %= 1000000007;
		} {
			if (issafe[i - 1]) {
				dp[i] += dp[i - 1];
			}
			if (issafe[i - 2]) {
				dp[i] += dp[i - 2];
			}
			dp[i] %= 1000000007;
		} if (issafe[i - 1]) {
				dp[i] += dp[i - 1];
			} issafe[i - 1] issafe i - 1 i 1 {
				dp[i] += dp[i - 1];
			} dp[i] += dp[i - 1] dp[i] dp i dp[i - 1] dp i - 1 i 1 if (issafe[i - 2]) {
				dp[i] += dp[i - 2];
			} issafe[i - 2] issafe i - 2 i 2 {
				dp[i] += dp[i - 2];
			} dp[i] += dp[i - 2] dp[i] dp i dp[i - 2] dp i - 2 i 2 dp[i] %= 1000000007 dp[i] dp i 1000000007 System.out.println(dp[N]) System.out.println System.out System System.out dp[N] dp N in.close() in.close in String[] args args public class Main {

	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		int N = in.nextInt();
		int M = in.nextInt();
		boolean[] issafe = new boolean[N + 1];
		Arrays.fill(issafe, true);
		for (int i = 0; i < M; i++) {
			issafe[in.nextInt()] = false;
		}
		int[] dp = new int[N + 1];
		dp[0] = 1;
		if (issafe[1]) {
			dp[1] = 1;
		}
		for (int i = 2; i <= N; i++) {
			if (issafe[i - 1]) {
				dp[i] += dp[i - 1];
			}
			if (issafe[i - 2]) {
				dp[i] += dp[i - 2];
			}
			dp[i] %= 1000000007;
		}
		System.out.println(dp[N]);
		in.close();
	}
} public class Main {

	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		int N = in.nextInt();
		int M = in.nextInt();
		boolean[] issafe = new boolean[N + 1];
		Arrays.fill(issafe, true);
		for (int i = 0; i < M; i++) {
			issafe[in.nextInt()] = false;
		}
		int[] dp = new int[N + 1];
		dp[0] = 1;
		if (issafe[1]) {
			dp[1] = 1;
		}
		for (int i = 2; i <= N; i++) {
			if (issafe[i - 1]) {
				dp[i] += dp[i - 1];
			}
			if (issafe[i - 2]) {
				dp[i] += dp[i - 2];
			}
			dp[i] %= 1000000007;
		}
		System.out.println(dp[N]);
		in.close();
	}
} Main
import java.util.Arrays;
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		int N = in.nextInt();
		int M = in.nextInt();
		boolean[] issafe = new boolean[N + 1];
		Arrays.fill(issafe, true);
		for (int i = 0; i < M; i++) {
			issafe[in.nextInt()] = false;
		}
		int[] dp = new int[N + 1];
		dp[0] = 1;
		if (issafe[1]) {
			dp[1] = 1;
		}
		for (int i = 2; i <= N; i++) {
			if (issafe[i - 1]) {
				dp[i] += dp[i - 1];
			}
			if (issafe[i - 2]) {
				dp[i] += dp[i - 2];
			}
			dp[i] %= 1000000007;
		}
		System.out.println(dp[N]);
		in.close();
	}
}