import java.util.Scanner;

public class Main {

	public static final long MOD = 1000000007L;

	public static void main(String args[]) {

		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt();
		int M = sc.nextInt();

		long[] a = new long[M];
		long[] steps = new long[N+1];
		for(int i=0;i<N;i++) {
			steps[i] = 0;
		}

		for(int i=0;i<M;i++) {
			a[i] = sc.nextLong();
			steps[(int) a[i]] = -1;
		}

		steps[0] = 1;
		steps[1] = (steps[1] == -1) ? -1 : 1;
		for(int i=2;i<N+1;i++) {

			if(steps[i] == -1) continue;

			if(steps[i-1] == -1 && steps[i-2] == -1) {
				System.out.println(0);
				return;
			}

			if(steps[i-1] == -1) {
				steps[i] = steps[i-2];
			}else if(steps[i-2] == -1) {
				steps[i] = steps[i-1];
			}else {
				steps[i] = (steps[i-1] + steps[i-2])%MOD;
			}
		}
		System.out.println(steps[N]%MOD);
	}
} import java.util.Scanner; Scanner java.util public class Main {

	public static final long MOD = 1000000007L;

	public static void main(String args[]) {

		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt();
		int M = sc.nextInt();

		long[] a = new long[M];
		long[] steps = new long[N+1];
		for(int i=0;i<N;i++) {
			steps[i] = 0;
		}

		for(int i=0;i<M;i++) {
			a[i] = sc.nextLong();
			steps[(int) a[i]] = -1;
		}

		steps[0] = 1;
		steps[1] = (steps[1] == -1) ? -1 : 1;
		for(int i=2;i<N+1;i++) {

			if(steps[i] == -1) continue;

			if(steps[i-1] == -1 && steps[i-2] == -1) {
				System.out.println(0);
				return;
			}

			if(steps[i-1] == -1) {
				steps[i] = steps[i-2];
			}else if(steps[i-2] == -1) {
				steps[i] = steps[i-1];
			}else {
				steps[i] = (steps[i-1] + steps[i-2])%MOD;
			}
		}
		System.out.println(steps[N]%MOD);
	}
} Main public static final long MOD = 1000000007L; MOD 1000000007L public static void main(String args[]) {

		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt();
		int M = sc.nextInt();

		long[] a = new long[M];
		long[] steps = new long[N+1];
		for(int i=0;i<N;i++) {
			steps[i] = 0;
		}

		for(int i=0;i<M;i++) {
			a[i] = sc.nextLong();
			steps[(int) a[i]] = -1;
		}

		steps[0] = 1;
		steps[1] = (steps[1] == -1) ? -1 : 1;
		for(int i=2;i<N+1;i++) {

			if(steps[i] == -1) continue;

			if(steps[i-1] == -1 && steps[i-2] == -1) {
				System.out.println(0);
				return;
			}

			if(steps[i-1] == -1) {
				steps[i] = steps[i-2];
			}else if(steps[i-2] == -1) {
				steps[i] = steps[i-1];
			}else {
				steps[i] = (steps[i-1] + steps[i-2])%MOD;
			}
		}
		System.out.println(steps[N]%MOD);
	} main {

		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt();
		int M = sc.nextInt();

		long[] a = new long[M];
		long[] steps = new long[N+1];
		for(int i=0;i<N;i++) {
			steps[i] = 0;
		}

		for(int i=0;i<M;i++) {
			a[i] = sc.nextLong();
			steps[(int) a[i]] = -1;
		}

		steps[0] = 1;
		steps[1] = (steps[1] == -1) ? -1 : 1;
		for(int i=2;i<N+1;i++) {

			if(steps[i] == -1) continue;

			if(steps[i-1] == -1 && steps[i-2] == -1) {
				System.out.println(0);
				return;
			}

			if(steps[i-1] == -1) {
				steps[i] = steps[i-2];
			}else if(steps[i-2] == -1) {
				steps[i] = steps[i-1];
			}else {
				steps[i] = (steps[i-1] + steps[i-2])%MOD;
			}
		}
		System.out.println(steps[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 long[] a = new long[M]; a new long[M] M long[] steps = new long[N+1]; steps new long[N+1] N+1 N 1 for(int i=0;i<N;i++) {
			steps[i] = 0;
		} int i=0; int i=0; i 0 i<N i N i++ i++ i {
			steps[i] = 0;
		} {
			steps[i] = 0;
		} steps[i] = 0 steps[i] steps i 0 for(int i=0;i<M;i++) {
			a[i] = sc.nextLong();
			steps[(int) a[i]] = -1;
		} int i=0; int i=0; i 0 i<M i M i++ i++ i {
			a[i] = sc.nextLong();
			steps[(int) a[i]] = -1;
		} {
			a[i] = sc.nextLong();
			steps[(int) a[i]] = -1;
		} a[i] = sc.nextLong() a[i] a i sc.nextLong() sc.nextLong sc steps[(int) a[i]] = -1 steps[(int) a[i]] steps (int) a[i] a i -1 1 steps[0] = 1 steps[0] steps 0 1 steps[1] = (steps[1] == -1) ? -1 : 1 steps[1] steps 1 (steps[1] == -1) ? -1 : 1 (steps[1] == -1) steps[1] steps 1 -1 1 -1 1 1 for(int i=2;i<N+1;i++) {

			if(steps[i] == -1) continue;

			if(steps[i-1] == -1 && steps[i-2] == -1) {
				System.out.println(0);
				return;
			}

			if(steps[i-1] == -1) {
				steps[i] = steps[i-2];
			}else if(steps[i-2] == -1) {
				steps[i] = steps[i-1];
			}else {
				steps[i] = (steps[i-1] + steps[i-2])%MOD;
			}
		} int i=2; int i=2; i 2 i<N+1 i N+1 N 1 i++ i++ i {

			if(steps[i] == -1) continue;

			if(steps[i-1] == -1 && steps[i-2] == -1) {
				System.out.println(0);
				return;
			}

			if(steps[i-1] == -1) {
				steps[i] = steps[i-2];
			}else if(steps[i-2] == -1) {
				steps[i] = steps[i-1];
			}else {
				steps[i] = (steps[i-1] + steps[i-2])%MOD;
			}
		} {

			if(steps[i] == -1) continue;

			if(steps[i-1] == -1 && steps[i-2] == -1) {
				System.out.println(0);
				return;
			}

			if(steps[i-1] == -1) {
				steps[i] = steps[i-2];
			}else if(steps[i-2] == -1) {
				steps[i] = steps[i-1];
			}else {
				steps[i] = (steps[i-1] + steps[i-2])%MOD;
			}
		} if(steps[i] == -1) continue; steps[i] == -1 steps[i] steps i -1 1 continue; if(steps[i-1] == -1 && steps[i-2] == -1) {
				System.out.println(0);
				return;
			} steps[i-1] == -1 && steps[i-2] == -1 steps[i-1] == -1 steps[i-1] steps i-1 i 1 -1 1 steps[i-2] == -1 steps[i-2] steps i-2 i 2 -1 1 {
				System.out.println(0);
				return;
			} System.out.println(0) System.out.println System.out System System.out 0 return; if(steps[i-1] == -1) {
				steps[i] = steps[i-2];
			}else if(steps[i-2] == -1) {
				steps[i] = steps[i-1];
			}else {
				steps[i] = (steps[i-1] + steps[i-2])%MOD;
			} steps[i-1] == -1 steps[i-1] steps i-1 i 1 -1 1 {
				steps[i] = steps[i-2];
			} steps[i] = steps[i-2] steps[i] steps i steps[i-2] steps i-2 i 2 if(steps[i-2] == -1) {
				steps[i] = steps[i-1];
			}else {
				steps[i] = (steps[i-1] + steps[i-2])%MOD;
			} steps[i-2] == -1 steps[i-2] steps i-2 i 2 -1 1 {
				steps[i] = steps[i-1];
			} steps[i] = steps[i-1] steps[i] steps i steps[i-1] steps i-1 i 1 {
				steps[i] = (steps[i-1] + steps[i-2])%MOD;
			} steps[i] = (steps[i-1] + steps[i-2])%MOD steps[i] steps i (steps[i-1] + steps[i-2])%MOD (steps[i-1] + steps[i-2]) steps[i-1] steps i-1 i 1 steps[i-2] steps i-2 i 2 MOD System.out.println(steps[N]%MOD) System.out.println System.out System System.out steps[N]%MOD steps[N] steps N MOD String args[] args public class Main {

	public static final long MOD = 1000000007L;

	public static void main(String args[]) {

		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt();
		int M = sc.nextInt();

		long[] a = new long[M];
		long[] steps = new long[N+1];
		for(int i=0;i<N;i++) {
			steps[i] = 0;
		}

		for(int i=0;i<M;i++) {
			a[i] = sc.nextLong();
			steps[(int) a[i]] = -1;
		}

		steps[0] = 1;
		steps[1] = (steps[1] == -1) ? -1 : 1;
		for(int i=2;i<N+1;i++) {

			if(steps[i] == -1) continue;

			if(steps[i-1] == -1 && steps[i-2] == -1) {
				System.out.println(0);
				return;
			}

			if(steps[i-1] == -1) {
				steps[i] = steps[i-2];
			}else if(steps[i-2] == -1) {
				steps[i] = steps[i-1];
			}else {
				steps[i] = (steps[i-1] + steps[i-2])%MOD;
			}
		}
		System.out.println(steps[N]%MOD);
	}
} public class Main {

	public static final long MOD = 1000000007L;

	public static void main(String args[]) {

		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt();
		int M = sc.nextInt();

		long[] a = new long[M];
		long[] steps = new long[N+1];
		for(int i=0;i<N;i++) {
			steps[i] = 0;
		}

		for(int i=0;i<M;i++) {
			a[i] = sc.nextLong();
			steps[(int) a[i]] = -1;
		}

		steps[0] = 1;
		steps[1] = (steps[1] == -1) ? -1 : 1;
		for(int i=2;i<N+1;i++) {

			if(steps[i] == -1) continue;

			if(steps[i-1] == -1 && steps[i-2] == -1) {
				System.out.println(0);
				return;
			}

			if(steps[i-1] == -1) {
				steps[i] = steps[i-2];
			}else if(steps[i-2] == -1) {
				steps[i] = steps[i-1];
			}else {
				steps[i] = (steps[i-1] + steps[i-2])%MOD;
			}
		}
		System.out.println(steps[N]%MOD);
	}
} Main
import java.util.Scanner;

public class Main {

	public static final long MOD = 1000000007L;

	public static void main(String args[]) {

		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt();
		int M = sc.nextInt();

		long[] a = new long[M];
		long[] steps = new long[N+1];
		for(int i=0;i<N;i++) {
			steps[i] = 0;
		}

		for(int i=0;i<M;i++) {
			a[i] = sc.nextLong();
			steps[(int) a[i]] = -1;
		}

		steps[0] = 1;
		steps[1] = (steps[1] == -1) ? -1 : 1;
		for(int i=2;i<N+1;i++) {

			if(steps[i] == -1) continue;

			if(steps[i-1] == -1 && steps[i-2] == -1) {
				System.out.println(0);
				return;
			}

			if(steps[i-1] == -1) {
				steps[i] = steps[i-2];
			}else if(steps[i-2] == -1) {
				steps[i] = steps[i-1];
			}else {
				steps[i] = (steps[i-1] + steps[i-2])%MOD;
			}
		}
		System.out.println(steps[N]%MOD);
	}
}