import java.util.Scanner;

public class Main {
	static long mod = 1_000_000_007;
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		boolean[] step = new boolean[in.nextInt()];
		int bs = in.nextInt();
		int[] bsnum = new int[bs];
		for (int i = 0; i < bs; i++) {
			bsnum[i] = in.nextInt();
		}
		in.close();
		for (int i = 0; i < step.length; i++) {
			step[i] = true;
		}
		for (int b : bsnum) {
			step[b - 1] = false;
			if (b != 1 && !step[b - 2]) {
				System.out.println(0);
				return;
			}
		}
		long[] dp = new long[step.length + 1];
		dp[0] = 1L;
		for (int i = 0; i < dp.length - 1; i++) {
			if (!step[i]) {
				dp[i + 1] = 0;
				continue;
			}
			if (i == 0) {
				dp[i + 1] = 1L;
            	continue;
			}
			dp[i + 1] = dp[i] + dp[i - 1];
			dp[i + 1] %= mod;
		}
		System.out.println(dp[step.length]);
	}
} import java.util.Scanner; Scanner java.util public class Main {
	static long mod = 1_000_000_007;
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		boolean[] step = new boolean[in.nextInt()];
		int bs = in.nextInt();
		int[] bsnum = new int[bs];
		for (int i = 0; i < bs; i++) {
			bsnum[i] = in.nextInt();
		}
		in.close();
		for (int i = 0; i < step.length; i++) {
			step[i] = true;
		}
		for (int b : bsnum) {
			step[b - 1] = false;
			if (b != 1 && !step[b - 2]) {
				System.out.println(0);
				return;
			}
		}
		long[] dp = new long[step.length + 1];
		dp[0] = 1L;
		for (int i = 0; i < dp.length - 1; i++) {
			if (!step[i]) {
				dp[i + 1] = 0;
				continue;
			}
			if (i == 0) {
				dp[i + 1] = 1L;
            	continue;
			}
			dp[i + 1] = dp[i] + dp[i - 1];
			dp[i + 1] %= mod;
		}
		System.out.println(dp[step.length]);
	}
} Main static long mod = 1_000_000_007; mod 1_000_000_007 public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		boolean[] step = new boolean[in.nextInt()];
		int bs = in.nextInt();
		int[] bsnum = new int[bs];
		for (int i = 0; i < bs; i++) {
			bsnum[i] = in.nextInt();
		}
		in.close();
		for (int i = 0; i < step.length; i++) {
			step[i] = true;
		}
		for (int b : bsnum) {
			step[b - 1] = false;
			if (b != 1 && !step[b - 2]) {
				System.out.println(0);
				return;
			}
		}
		long[] dp = new long[step.length + 1];
		dp[0] = 1L;
		for (int i = 0; i < dp.length - 1; i++) {
			if (!step[i]) {
				dp[i + 1] = 0;
				continue;
			}
			if (i == 0) {
				dp[i + 1] = 1L;
            	continue;
			}
			dp[i + 1] = dp[i] + dp[i - 1];
			dp[i + 1] %= mod;
		}
		System.out.println(dp[step.length]);
	} main {
		Scanner in = new Scanner(System.in);
		boolean[] step = new boolean[in.nextInt()];
		int bs = in.nextInt();
		int[] bsnum = new int[bs];
		for (int i = 0; i < bs; i++) {
			bsnum[i] = in.nextInt();
		}
		in.close();
		for (int i = 0; i < step.length; i++) {
			step[i] = true;
		}
		for (int b : bsnum) {
			step[b - 1] = false;
			if (b != 1 && !step[b - 2]) {
				System.out.println(0);
				return;
			}
		}
		long[] dp = new long[step.length + 1];
		dp[0] = 1L;
		for (int i = 0; i < dp.length - 1; i++) {
			if (!step[i]) {
				dp[i + 1] = 0;
				continue;
			}
			if (i == 0) {
				dp[i + 1] = 1L;
            	continue;
			}
			dp[i + 1] = dp[i] + dp[i - 1];
			dp[i + 1] %= mod;
		}
		System.out.println(dp[step.length]);
	} Scanner in = new Scanner(System.in); in new Scanner(System.in) boolean[] step = new boolean[in.nextInt()]; step new boolean[in.nextInt()] in.nextInt() in.nextInt in int bs = in.nextInt(); bs in.nextInt() in.nextInt in int[] bsnum = new int[bs]; bsnum new int[bs] bs for (int i = 0; i < bs; i++) {
			bsnum[i] = in.nextInt();
		} int i = 0; int i = 0; i 0 i < bs i bs i++ i++ i {
			bsnum[i] = in.nextInt();
		} {
			bsnum[i] = in.nextInt();
		} bsnum[i] = in.nextInt() bsnum[i] bsnum i in.nextInt() in.nextInt in in.close() in.close in for (int i = 0; i < step.length; i++) {
			step[i] = true;
		} int i = 0; int i = 0; i 0 i < step.length i step.length step step.length i++ i++ i {
			step[i] = true;
		} {
			step[i] = true;
		} step[i] = true step[i] step i true for (int b : bsnum) {
			step[b - 1] = false;
			if (b != 1 && !step[b - 2]) {
				System.out.println(0);
				return;
			}
		} int b bsnum {
			step[b - 1] = false;
			if (b != 1 && !step[b - 2]) {
				System.out.println(0);
				return;
			}
		} {
			step[b - 1] = false;
			if (b != 1 && !step[b - 2]) {
				System.out.println(0);
				return;
			}
		} step[b - 1] = false step[b - 1] step b - 1 b 1 false if (b != 1 && !step[b - 2]) {
				System.out.println(0);
				return;
			} b != 1 && !step[b - 2] b != 1 b 1 !step[b - 2] step[b - 2] step b - 2 b 2 {
				System.out.println(0);
				return;
			} System.out.println(0) System.out.println System.out System System.out 0 return; long[] dp = new long[step.length + 1]; dp new long[step.length + 1] step.length + 1 step.length step step.length 1 dp[0] = 1L dp[0] dp 0 1L for (int i = 0; i < dp.length - 1; i++) {
			if (!step[i]) {
				dp[i + 1] = 0;
				continue;
			}
			if (i == 0) {
				dp[i + 1] = 1L;
            	continue;
			}
			dp[i + 1] = dp[i] + dp[i - 1];
			dp[i + 1] %= mod;
		} int i = 0; int i = 0; i 0 i < dp.length - 1 i dp.length - 1 dp.length dp dp.length 1 i++ i++ i {
			if (!step[i]) {
				dp[i + 1] = 0;
				continue;
			}
			if (i == 0) {
				dp[i + 1] = 1L;
            	continue;
			}
			dp[i + 1] = dp[i] + dp[i - 1];
			dp[i + 1] %= mod;
		} {
			if (!step[i]) {
				dp[i + 1] = 0;
				continue;
			}
			if (i == 0) {
				dp[i + 1] = 1L;
            	continue;
			}
			dp[i + 1] = dp[i] + dp[i - 1];
			dp[i + 1] %= mod;
		} if (!step[i]) {
				dp[i + 1] = 0;
				continue;
			} !step[i] step[i] step i {
				dp[i + 1] = 0;
				continue;
			} dp[i + 1] = 0 dp[i + 1] dp i + 1 i 1 0 continue; if (i == 0) {
				dp[i + 1] = 1L;
            	continue;
			} i == 0 i 0 {
				dp[i + 1] = 1L;
            	continue;
			} dp[i + 1] = 1L dp[i + 1] dp i + 1 i 1 1L continue; dp[i + 1] = dp[i] + dp[i - 1] dp[i + 1] dp i + 1 i 1 dp[i] + dp[i - 1] dp[i] dp i dp[i - 1] dp i - 1 i 1 dp[i + 1] %= mod dp[i + 1] dp i + 1 i 1 mod System.out.println(dp[step.length]) System.out.println System.out System System.out dp[step.length] dp step.length step step.length String[] args args public class Main {
	static long mod = 1_000_000_007;
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		boolean[] step = new boolean[in.nextInt()];
		int bs = in.nextInt();
		int[] bsnum = new int[bs];
		for (int i = 0; i < bs; i++) {
			bsnum[i] = in.nextInt();
		}
		in.close();
		for (int i = 0; i < step.length; i++) {
			step[i] = true;
		}
		for (int b : bsnum) {
			step[b - 1] = false;
			if (b != 1 && !step[b - 2]) {
				System.out.println(0);
				return;
			}
		}
		long[] dp = new long[step.length + 1];
		dp[0] = 1L;
		for (int i = 0; i < dp.length - 1; i++) {
			if (!step[i]) {
				dp[i + 1] = 0;
				continue;
			}
			if (i == 0) {
				dp[i + 1] = 1L;
            	continue;
			}
			dp[i + 1] = dp[i] + dp[i - 1];
			dp[i + 1] %= mod;
		}
		System.out.println(dp[step.length]);
	}
} public class Main {
	static long mod = 1_000_000_007;
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		boolean[] step = new boolean[in.nextInt()];
		int bs = in.nextInt();
		int[] bsnum = new int[bs];
		for (int i = 0; i < bs; i++) {
			bsnum[i] = in.nextInt();
		}
		in.close();
		for (int i = 0; i < step.length; i++) {
			step[i] = true;
		}
		for (int b : bsnum) {
			step[b - 1] = false;
			if (b != 1 && !step[b - 2]) {
				System.out.println(0);
				return;
			}
		}
		long[] dp = new long[step.length + 1];
		dp[0] = 1L;
		for (int i = 0; i < dp.length - 1; i++) {
			if (!step[i]) {
				dp[i + 1] = 0;
				continue;
			}
			if (i == 0) {
				dp[i + 1] = 1L;
            	continue;
			}
			dp[i + 1] = dp[i] + dp[i - 1];
			dp[i + 1] %= mod;
		}
		System.out.println(dp[step.length]);
	}
} Main
import java.util.Scanner;

public class Main {
	static long mod = 1_000_000_007;
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		boolean[] step = new boolean[in.nextInt()];
		int bs = in.nextInt();
		int[] bsnum = new int[bs];
		for (int i = 0; i < bs; i++) {
			bsnum[i] = in.nextInt();
		}
		in.close();
		for (int i = 0; i < step.length; i++) {
			step[i] = true;
		}
		for (int b : bsnum) {
			step[b - 1] = false;
			if (b != 1 && !step[b - 2]) {
				System.out.println(0);
				return;
			}
		}
		long[] dp = new long[step.length + 1];
		dp[0] = 1L;
		for (int i = 0; i < dp.length - 1; i++) {
			if (!step[i]) {
				dp[i + 1] = 0;
				continue;
			}
			if (i == 0) {
				dp[i + 1] = 1L;
            	continue;
			}
			dp[i + 1] = dp[i] + dp[i - 1];
			dp[i + 1] %= mod;
		}
		System.out.println(dp[step.length]);
	}
}