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();
		int M = 1000000007;
		long[] a = new long[n + 1];
		for (int i = 0; i < m; i++) {
			a[sc.nextInt()] = -1;
		}

		a[0] = 1;
		a[1] = a[1] == -1 ? -1 : 1;
		for (int i = 2; i <= n; i++) {
			if (a[i] == -1) continue;
			long steps = 0;
			if (a[i - 1] != -1) steps = (steps + a[i - 1]) % M;
			if (a[i - 2] != -1) steps = (steps + a[i - 2]) % M;
			a[i] = steps;
		}

		System.out.println(a[n]);
	}
} 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();
		int M = 1000000007;
		long[] a = new long[n + 1];
		for (int i = 0; i < m; i++) {
			a[sc.nextInt()] = -1;
		}

		a[0] = 1;
		a[1] = a[1] == -1 ? -1 : 1;
		for (int i = 2; i <= n; i++) {
			if (a[i] == -1) continue;
			long steps = 0;
			if (a[i - 1] != -1) steps = (steps + a[i - 1]) % M;
			if (a[i - 2] != -1) steps = (steps + a[i - 2]) % M;
			a[i] = steps;
		}

		System.out.println(a[n]);
	}
} Main public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);

		int n = sc.nextInt();
		int m = sc.nextInt();
		int M = 1000000007;
		long[] a = new long[n + 1];
		for (int i = 0; i < m; i++) {
			a[sc.nextInt()] = -1;
		}

		a[0] = 1;
		a[1] = a[1] == -1 ? -1 : 1;
		for (int i = 2; i <= n; i++) {
			if (a[i] == -1) continue;
			long steps = 0;
			if (a[i - 1] != -1) steps = (steps + a[i - 1]) % M;
			if (a[i - 2] != -1) steps = (steps + a[i - 2]) % M;
			a[i] = steps;
		}

		System.out.println(a[n]);
	} main {
		Scanner sc = new Scanner(System.in);

		int n = sc.nextInt();
		int m = sc.nextInt();
		int M = 1000000007;
		long[] a = new long[n + 1];
		for (int i = 0; i < m; i++) {
			a[sc.nextInt()] = -1;
		}

		a[0] = 1;
		a[1] = a[1] == -1 ? -1 : 1;
		for (int i = 2; i <= n; i++) {
			if (a[i] == -1) continue;
			long steps = 0;
			if (a[i - 1] != -1) steps = (steps + a[i - 1]) % M;
			if (a[i - 2] != -1) steps = (steps + a[i - 2]) % M;
			a[i] = steps;
		}

		System.out.println(a[n]);
	} 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 int M = 1000000007; M 1000000007 long[] a = new long[n + 1]; a new long[n + 1] n + 1 n 1 for (int i = 0; i < m; i++) {
			a[sc.nextInt()] = -1;
		} int i = 0; int i = 0; i 0 i < m i m i++ i++ i {
			a[sc.nextInt()] = -1;
		} {
			a[sc.nextInt()] = -1;
		} a[sc.nextInt()] = -1 a[sc.nextInt()] a sc.nextInt() sc.nextInt sc -1 1 a[0] = 1 a[0] a 0 1 a[1] = a[1] == -1 ? -1 : 1 a[1] a 1 a[1] == -1 ? -1 : 1 a[1] == -1 a[1] a 1 -1 1 -1 1 1 for (int i = 2; i <= n; i++) {
			if (a[i] == -1) continue;
			long steps = 0;
			if (a[i - 1] != -1) steps = (steps + a[i - 1]) % M;
			if (a[i - 2] != -1) steps = (steps + a[i - 2]) % M;
			a[i] = steps;
		} int i = 2; int i = 2; i 2 i <= n i n i++ i++ i {
			if (a[i] == -1) continue;
			long steps = 0;
			if (a[i - 1] != -1) steps = (steps + a[i - 1]) % M;
			if (a[i - 2] != -1) steps = (steps + a[i - 2]) % M;
			a[i] = steps;
		} {
			if (a[i] == -1) continue;
			long steps = 0;
			if (a[i - 1] != -1) steps = (steps + a[i - 1]) % M;
			if (a[i - 2] != -1) steps = (steps + a[i - 2]) % M;
			a[i] = steps;
		} if (a[i] == -1) continue; a[i] == -1 a[i] a i -1 1 continue; long steps = 0; steps 0 if (a[i - 1] != -1) steps = (steps + a[i - 1]) % M; a[i - 1] != -1 a[i - 1] a i - 1 i 1 -1 1 steps = (steps + a[i - 1]) % M steps (steps + a[i - 1]) % M (steps + a[i - 1]) steps a[i - 1] a i - 1 i 1 M if (a[i - 2] != -1) steps = (steps + a[i - 2]) % M; a[i - 2] != -1 a[i - 2] a i - 2 i 2 -1 1 steps = (steps + a[i - 2]) % M steps (steps + a[i - 2]) % M (steps + a[i - 2]) steps a[i - 2] a i - 2 i 2 M a[i] = steps a[i] a i steps System.out.println(a[n]) System.out.println System.out System System.out a[n] a n 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();
		int M = 1000000007;
		long[] a = new long[n + 1];
		for (int i = 0; i < m; i++) {
			a[sc.nextInt()] = -1;
		}

		a[0] = 1;
		a[1] = a[1] == -1 ? -1 : 1;
		for (int i = 2; i <= n; i++) {
			if (a[i] == -1) continue;
			long steps = 0;
			if (a[i - 1] != -1) steps = (steps + a[i - 1]) % M;
			if (a[i - 2] != -1) steps = (steps + a[i - 2]) % M;
			a[i] = steps;
		}

		System.out.println(a[n]);
	}
} public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);

		int n = sc.nextInt();
		int m = sc.nextInt();
		int M = 1000000007;
		long[] a = new long[n + 1];
		for (int i = 0; i < m; i++) {
			a[sc.nextInt()] = -1;
		}

		a[0] = 1;
		a[1] = a[1] == -1 ? -1 : 1;
		for (int i = 2; i <= n; i++) {
			if (a[i] == -1) continue;
			long steps = 0;
			if (a[i - 1] != -1) steps = (steps + a[i - 1]) % M;
			if (a[i - 2] != -1) steps = (steps + a[i - 2]) % M;
			a[i] = steps;
		}

		System.out.println(a[n]);
	}
} Main
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();
		int M = 1000000007;
		long[] a = new long[n + 1];
		for (int i = 0; i < m; i++) {
			a[sc.nextInt()] = -1;
		}

		a[0] = 1;
		a[1] = a[1] == -1 ? -1 : 1;
		for (int i = 2; i <= n; i++) {
			if (a[i] == -1) continue;
			long steps = 0;
			if (a[i - 1] != -1) steps = (steps + a[i - 1]) % M;
			if (a[i - 2] != -1) steps = (steps + a[i - 2]) % M;
			a[i] = steps;
		}

		System.out.println(a[n]);
	}
}
