import java.util.Scanner;

public class Main {

	static long MOD = 1000000007;

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);

		int N = sc.nextInt();
		int M = sc.nextInt();

		boolean[] broken =new boolean[N+1];

		for (int i = 0; i < M; i++) {
			broken[sc.nextInt()] = true;
		}

		long[] dp=new long[N+1];
		dp[0] = 1;
		for (int i = 1; i < N +1; i++) {
			if (broken[i]) {
				continue;
			}else {
				long con = 0;
				//1段
				con = con + dp[i-1] % MOD;

				//2段
				if (i-2 >= 0) {
					con = con + dp[i-2] % MOD;
				}
				dp[i] = con;
			}
		}

		System.out.println(dp[N] % MOD);

	}

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

	static long MOD = 1000000007;

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);

		int N = sc.nextInt();
		int M = sc.nextInt();

		boolean[] broken =new boolean[N+1];

		for (int i = 0; i < M; i++) {
			broken[sc.nextInt()] = true;
		}

		long[] dp=new long[N+1];
		dp[0] = 1;
		for (int i = 1; i < N +1; i++) {
			if (broken[i]) {
				continue;
			}else {
				long con = 0;
				//1段
				con = con + dp[i-1] % MOD;

				//2段
				if (i-2 >= 0) {
					con = con + dp[i-2] % MOD;
				}
				dp[i] = con;
			}
		}

		System.out.println(dp[N] % MOD);

	}

} Main static long MOD = 1000000007; MOD 1000000007 public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);

		int N = sc.nextInt();
		int M = sc.nextInt();

		boolean[] broken =new boolean[N+1];

		for (int i = 0; i < M; i++) {
			broken[sc.nextInt()] = true;
		}

		long[] dp=new long[N+1];
		dp[0] = 1;
		for (int i = 1; i < N +1; i++) {
			if (broken[i]) {
				continue;
			}else {
				long con = 0;
				//1段
				con = con + dp[i-1] % MOD;

				//2段
				if (i-2 >= 0) {
					con = con + dp[i-2] % MOD;
				}
				dp[i] = con;
			}
		}

		System.out.println(dp[N] % MOD);

	} main {
		Scanner sc = new Scanner(System.in);

		int N = sc.nextInt();
		int M = sc.nextInt();

		boolean[] broken =new boolean[N+1];

		for (int i = 0; i < M; i++) {
			broken[sc.nextInt()] = true;
		}

		long[] dp=new long[N+1];
		dp[0] = 1;
		for (int i = 1; i < N +1; i++) {
			if (broken[i]) {
				continue;
			}else {
				long con = 0;
				//1段
				con = con + dp[i-1] % MOD;

				//2段
				if (i-2 >= 0) {
					con = con + dp[i-2] % MOD;
				}
				dp[i] = con;
			}
		}

		System.out.println(dp[N] % MOD);

	} 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[] broken =new boolean[N+1]; broken new boolean[N+1] N+1 N 1 for (int i = 0; i < M; i++) {
			broken[sc.nextInt()] = true;
		} int i = 0; int i = 0; i 0 i < M i M i++ i++ i {
			broken[sc.nextInt()] = true;
		} {
			broken[sc.nextInt()] = true;
		} broken[sc.nextInt()] = true broken[sc.nextInt()] broken sc.nextInt() sc.nextInt sc true long[] dp=new long[N+1]; dp new long[N+1] N+1 N 1 dp[0] = 1 dp[0] dp 0 1 for (int i = 1; i < N +1; i++) {
			if (broken[i]) {
				continue;
			}else {
				long con = 0;
				//1段
				con = con + dp[i-1] % MOD;

				//2段
				if (i-2 >= 0) {
					con = con + dp[i-2] % MOD;
				}
				dp[i] = con;
			}
		} int i = 1; int i = 1; i 1 i < N +1 i N +1 N 1 i++ i++ i {
			if (broken[i]) {
				continue;
			}else {
				long con = 0;
				//1段
				con = con + dp[i-1] % MOD;

				//2段
				if (i-2 >= 0) {
					con = con + dp[i-2] % MOD;
				}
				dp[i] = con;
			}
		} {
			if (broken[i]) {
				continue;
			}else {
				long con = 0;
				//1段
				con = con + dp[i-1] % MOD;

				//2段
				if (i-2 >= 0) {
					con = con + dp[i-2] % MOD;
				}
				dp[i] = con;
			}
		} if (broken[i]) {
				continue;
			}else {
				long con = 0;
				//1段
				con = con + dp[i-1] % MOD;

				//2段
				if (i-2 >= 0) {
					con = con + dp[i-2] % MOD;
				}
				dp[i] = con;
			} broken[i] broken i {
				continue;
			} continue; {
				long con = 0;
				//1段
				con = con + dp[i-1] % MOD;

				//2段
				if (i-2 >= 0) {
					con = con + dp[i-2] % MOD;
				}
				dp[i] = con;
			} long con = 0; con 0 con = con + dp[i-1] % MOD con con + dp[i-1] % MOD con dp[i-1] % MOD dp[i-1] dp i-1 i 1 MOD if (i-2 >= 0) {
					con = con + dp[i-2] % MOD;
				} i-2 >= 0 i-2 i 2 0 {
					con = con + dp[i-2] % MOD;
				} con = con + dp[i-2] % MOD con con + dp[i-2] % MOD con dp[i-2] % MOD dp[i-2] dp i-2 i 2 MOD dp[i] = con dp[i] dp i con System.out.println(dp[N] % MOD) System.out.println System.out System System.out dp[N] % MOD dp[N] dp N MOD String[] args args public class Main {

	static long MOD = 1000000007;

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);

		int N = sc.nextInt();
		int M = sc.nextInt();

		boolean[] broken =new boolean[N+1];

		for (int i = 0; i < M; i++) {
			broken[sc.nextInt()] = true;
		}

		long[] dp=new long[N+1];
		dp[0] = 1;
		for (int i = 1; i < N +1; i++) {
			if (broken[i]) {
				continue;
			}else {
				long con = 0;
				//1段
				con = con + dp[i-1] % MOD;

				//2段
				if (i-2 >= 0) {
					con = con + dp[i-2] % MOD;
				}
				dp[i] = con;
			}
		}

		System.out.println(dp[N] % MOD);

	}

} public class Main {

	static long MOD = 1000000007;

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);

		int N = sc.nextInt();
		int M = sc.nextInt();

		boolean[] broken =new boolean[N+1];

		for (int i = 0; i < M; i++) {
			broken[sc.nextInt()] = true;
		}

		long[] dp=new long[N+1];
		dp[0] = 1;
		for (int i = 1; i < N +1; i++) {
			if (broken[i]) {
				continue;
			}else {
				long con = 0;
				//1段
				con = con + dp[i-1] % MOD;

				//2段
				if (i-2 >= 0) {
					con = con + dp[i-2] % MOD;
				}
				dp[i] = con;
			}
		}

		System.out.println(dp[N] % MOD);

	}

} Main
import java.util.Scanner;

public class Main {

	static long MOD = 1000000007;

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);

		int N = sc.nextInt();
		int M = sc.nextInt();

		boolean[] broken =new boolean[N+1];

		for (int i = 0; i < M; i++) {
			broken[sc.nextInt()] = true;
		}

		long[] dp=new long[N+1];
		dp[0] = 1;
		for (int i = 1; i < N +1; i++) {
			if (broken[i]) {
				continue;
			}else {
				long con = 0;
				//1段
				con = con + dp[i-1] % MOD;

				//2段
				if (i-2 >= 0) {
					con = con + dp[i-2] % MOD;
				}
				dp[i] = con;
			}
		}

		System.out.println(dp[N] % MOD);

	}

}
