import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner in = new Scanner(new BufferedReader(new InputStreamReader(System.in)));
		int n = in.nextInt();
		int m = in.nextInt();
		boolean[] a = new boolean[n];
		for (int i = 0; i < m; i++) {
			int t = in.nextInt();
			a[t - 1] = true;
		}
		System.out.println(solve(a));
		in.close();
	}

	private static int solve(boolean[] a) {
		int[] r = new int[a.length];
		if (a[0])
			r[0] = 0;
		else
			r[0] = 1;
		if (a.length > 1)
			if (a[1])
				r[1] = 0;
			else
				r[1] = 1 + r[0];
		for (int i = 2; i < a.length; i++) {
			if (a[i])
				r[i] = 0;
			else
				r[i] = r[i - 2] + r[i - 1];
			r[i] %= 1000000007;
		}
		return r[a.length - 1];
	}
} import java.io.BufferedReader; BufferedReader java.io import java.io.InputStreamReader; InputStreamReader java.io 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(new BufferedReader(new InputStreamReader(System.in)));
		int n = in.nextInt();
		int m = in.nextInt();
		boolean[] a = new boolean[n];
		for (int i = 0; i < m; i++) {
			int t = in.nextInt();
			a[t - 1] = true;
		}
		System.out.println(solve(a));
		in.close();
	}

	private static int solve(boolean[] a) {
		int[] r = new int[a.length];
		if (a[0])
			r[0] = 0;
		else
			r[0] = 1;
		if (a.length > 1)
			if (a[1])
				r[1] = 0;
			else
				r[1] = 1 + r[0];
		for (int i = 2; i < a.length; i++) {
			if (a[i])
				r[i] = 0;
			else
				r[i] = r[i - 2] + r[i - 1];
			r[i] %= 1000000007;
		}
		return r[a.length - 1];
	}
} Main public static void main(String[] args) {
		Scanner in = new Scanner(new BufferedReader(new InputStreamReader(System.in)));
		int n = in.nextInt();
		int m = in.nextInt();
		boolean[] a = new boolean[n];
		for (int i = 0; i < m; i++) {
			int t = in.nextInt();
			a[t - 1] = true;
		}
		System.out.println(solve(a));
		in.close();
	} main {
		Scanner in = new Scanner(new BufferedReader(new InputStreamReader(System.in)));
		int n = in.nextInt();
		int m = in.nextInt();
		boolean[] a = new boolean[n];
		for (int i = 0; i < m; i++) {
			int t = in.nextInt();
			a[t - 1] = true;
		}
		System.out.println(solve(a));
		in.close();
	} Scanner in = new Scanner(new BufferedReader(new InputStreamReader(System.in))); in new Scanner(new BufferedReader(new InputStreamReader(System.in))) int n = in.nextInt(); n in.nextInt() in.nextInt in int m = in.nextInt(); m in.nextInt() in.nextInt in boolean[] a = new boolean[n]; a new boolean[n] n for (int i = 0; i < m; i++) {
			int t = in.nextInt();
			a[t - 1] = true;
		} int i = 0; int i = 0; i 0 i < m i m i++ i++ i {
			int t = in.nextInt();
			a[t - 1] = true;
		} {
			int t = in.nextInt();
			a[t - 1] = true;
		} int t = in.nextInt(); t in.nextInt() in.nextInt in a[t - 1] = true a[t - 1] a t - 1 t 1 true System.out.println(solve(a)) System.out.println System.out System System.out solve(a) solve a in.close() in.close in String[] args args private static int solve(boolean[] a) {
		int[] r = new int[a.length];
		if (a[0])
			r[0] = 0;
		else
			r[0] = 1;
		if (a.length > 1)
			if (a[1])
				r[1] = 0;
			else
				r[1] = 1 + r[0];
		for (int i = 2; i < a.length; i++) {
			if (a[i])
				r[i] = 0;
			else
				r[i] = r[i - 2] + r[i - 1];
			r[i] %= 1000000007;
		}
		return r[a.length - 1];
	} solve {
		int[] r = new int[a.length];
		if (a[0])
			r[0] = 0;
		else
			r[0] = 1;
		if (a.length > 1)
			if (a[1])
				r[1] = 0;
			else
				r[1] = 1 + r[0];
		for (int i = 2; i < a.length; i++) {
			if (a[i])
				r[i] = 0;
			else
				r[i] = r[i - 2] + r[i - 1];
			r[i] %= 1000000007;
		}
		return r[a.length - 1];
	} int[] r = new int[a.length]; r new int[a.length] a.length a a.length if (a[0])
			r[0] = 0;
		else
			r[0] = 1; a[0] a 0 r[0] = 0 r[0] r 0 0 r[0] = 1 r[0] r 0 1 if (a.length > 1)
			if (a[1])
				r[1] = 0;
			else
				r[1] = 1 + r[0]; a.length > 1 a.length a a.length 1 if (a[1])
				r[1] = 0;
			else
				r[1] = 1 + r[0]; a[1] a 1 r[1] = 0 r[1] r 1 0 r[1] = 1 + r[0] r[1] r 1 1 + r[0] 1 r[0] r 0 for (int i = 2; i < a.length; i++) {
			if (a[i])
				r[i] = 0;
			else
				r[i] = r[i - 2] + r[i - 1];
			r[i] %= 1000000007;
		} int i = 2; int i = 2; i 2 i < a.length i a.length a a.length i++ i++ i {
			if (a[i])
				r[i] = 0;
			else
				r[i] = r[i - 2] + r[i - 1];
			r[i] %= 1000000007;
		} {
			if (a[i])
				r[i] = 0;
			else
				r[i] = r[i - 2] + r[i - 1];
			r[i] %= 1000000007;
		} if (a[i])
				r[i] = 0;
			else
				r[i] = r[i - 2] + r[i - 1]; a[i] a i r[i] = 0 r[i] r i 0 r[i] = r[i - 2] + r[i - 1] r[i] r i r[i - 2] + r[i - 1] r[i - 2] r i - 2 i 2 r[i - 1] r i - 1 i 1 r[i] %= 1000000007 r[i] r i 1000000007 return r[a.length - 1]; r[a.length - 1] r a.length - 1 a.length a a.length 1 boolean[] a a public class Main {
	public static void main(String[] args) {
		Scanner in = new Scanner(new BufferedReader(new InputStreamReader(System.in)));
		int n = in.nextInt();
		int m = in.nextInt();
		boolean[] a = new boolean[n];
		for (int i = 0; i < m; i++) {
			int t = in.nextInt();
			a[t - 1] = true;
		}
		System.out.println(solve(a));
		in.close();
	}

	private static int solve(boolean[] a) {
		int[] r = new int[a.length];
		if (a[0])
			r[0] = 0;
		else
			r[0] = 1;
		if (a.length > 1)
			if (a[1])
				r[1] = 0;
			else
				r[1] = 1 + r[0];
		for (int i = 2; i < a.length; i++) {
			if (a[i])
				r[i] = 0;
			else
				r[i] = r[i - 2] + r[i - 1];
			r[i] %= 1000000007;
		}
		return r[a.length - 1];
	}
} public class Main {
	public static void main(String[] args) {
		Scanner in = new Scanner(new BufferedReader(new InputStreamReader(System.in)));
		int n = in.nextInt();
		int m = in.nextInt();
		boolean[] a = new boolean[n];
		for (int i = 0; i < m; i++) {
			int t = in.nextInt();
			a[t - 1] = true;
		}
		System.out.println(solve(a));
		in.close();
	}

	private static int solve(boolean[] a) {
		int[] r = new int[a.length];
		if (a[0])
			r[0] = 0;
		else
			r[0] = 1;
		if (a.length > 1)
			if (a[1])
				r[1] = 0;
			else
				r[1] = 1 + r[0];
		for (int i = 2; i < a.length; i++) {
			if (a[i])
				r[i] = 0;
			else
				r[i] = r[i - 2] + r[i - 1];
			r[i] %= 1000000007;
		}
		return r[a.length - 1];
	}
} Main
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner in = new Scanner(new BufferedReader(new InputStreamReader(System.in)));
		int n = in.nextInt();
		int m = in.nextInt();
		boolean[] a = new boolean[n];
		for (int i = 0; i < m; i++) {
			int t = in.nextInt();
			a[t - 1] = true;
		}
		System.out.println(solve(a));
		in.close();
	}

	private static int solve(boolean[] a) {
		int[] r = new int[a.length];
		if (a[0])
			r[0] = 0;
		else
			r[0] = 1;
		if (a.length > 1)
			if (a[1])
				r[1] = 0;
			else
				r[1] = 1 + r[0];
		for (int i = 2; i < a.length; i++) {
			if (a[i])
				r[i] = 0;
			else
				r[i] = r[i - 2] + r[i - 1];
			r[i] %= 1000000007;
		}
		return r[a.length - 1];
	}
}