import java.util.*;

public class Main {
	public static void main(String[] args) {
		Main main = new Main();
		main.run();
	}

	public void run() {
		Scanner sc = new Scanner(System.in);
		int N=sc.nextInt();
		int M=sc.nextInt();
		ArrayList<Integer> a = new ArrayList<Integer>();
		for(int i=0; i<M; i++) {
			a.add(sc.nextInt());
		}

		int MOD = 1000000007;
		long dp[] = new long[N+1];
		dp[0] = 1;
		int j=0;
		for(int i=1; i<=N; i++) {
			if(j<M && a.get(j) == i) {
				j++;
				continue;
			}
			dp[i] += dp[i-1];
			dp[i] %= MOD;
			if(i-2>=0) {
				dp[i] += dp[i-2];
				dp[i] %= MOD;
			}
		}
		System.out.println(dp[N]);
		sc.close();
	}
} import java.util.*; util.* java public class Main {
	public static void main(String[] args) {
		Main main = new Main();
		main.run();
	}

	public void run() {
		Scanner sc = new Scanner(System.in);
		int N=sc.nextInt();
		int M=sc.nextInt();
		ArrayList<Integer> a = new ArrayList<Integer>();
		for(int i=0; i<M; i++) {
			a.add(sc.nextInt());
		}

		int MOD = 1000000007;
		long dp[] = new long[N+1];
		dp[0] = 1;
		int j=0;
		for(int i=1; i<=N; i++) {
			if(j<M && a.get(j) == i) {
				j++;
				continue;
			}
			dp[i] += dp[i-1];
			dp[i] %= MOD;
			if(i-2>=0) {
				dp[i] += dp[i-2];
				dp[i] %= MOD;
			}
		}
		System.out.println(dp[N]);
		sc.close();
	}
} Main public static void main(String[] args) {
		Main main = new Main();
		main.run();
	} main {
		Main main = new Main();
		main.run();
	} Main main = new Main(); main new Main() main.run() main.run main String[] args args public void run() {
		Scanner sc = new Scanner(System.in);
		int N=sc.nextInt();
		int M=sc.nextInt();
		ArrayList<Integer> a = new ArrayList<Integer>();
		for(int i=0; i<M; i++) {
			a.add(sc.nextInt());
		}

		int MOD = 1000000007;
		long dp[] = new long[N+1];
		dp[0] = 1;
		int j=0;
		for(int i=1; i<=N; i++) {
			if(j<M && a.get(j) == i) {
				j++;
				continue;
			}
			dp[i] += dp[i-1];
			dp[i] %= MOD;
			if(i-2>=0) {
				dp[i] += dp[i-2];
				dp[i] %= MOD;
			}
		}
		System.out.println(dp[N]);
		sc.close();
	} run {
		Scanner sc = new Scanner(System.in);
		int N=sc.nextInt();
		int M=sc.nextInt();
		ArrayList<Integer> a = new ArrayList<Integer>();
		for(int i=0; i<M; i++) {
			a.add(sc.nextInt());
		}

		int MOD = 1000000007;
		long dp[] = new long[N+1];
		dp[0] = 1;
		int j=0;
		for(int i=1; i<=N; i++) {
			if(j<M && a.get(j) == i) {
				j++;
				continue;
			}
			dp[i] += dp[i-1];
			dp[i] %= MOD;
			if(i-2>=0) {
				dp[i] += dp[i-2];
				dp[i] %= MOD;
			}
		}
		System.out.println(dp[N]);
		sc.close();
	} 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 ArrayList<Integer> a = new ArrayList<Integer>(); a new ArrayList<Integer>() for(int i=0; i<M; i++) {
			a.add(sc.nextInt());
		} int i=0; int i=0; i 0 i<M i M i++ i++ i {
			a.add(sc.nextInt());
		} {
			a.add(sc.nextInt());
		} a.add(sc.nextInt()) a.add a sc.nextInt() sc.nextInt sc int MOD = 1000000007; MOD 1000000007 long dp[] = new long[N+1]; dp new long[N+1] N+1 N 1 dp[0] = 1 dp[0] dp 0 1 int j=0; j 0 for(int i=1; i<=N; i++) {
			if(j<M && a.get(j) == i) {
				j++;
				continue;
			}
			dp[i] += dp[i-1];
			dp[i] %= MOD;
			if(i-2>=0) {
				dp[i] += dp[i-2];
				dp[i] %= MOD;
			}
		} int i=1; int i=1; i 1 i<=N i N i++ i++ i {
			if(j<M && a.get(j) == i) {
				j++;
				continue;
			}
			dp[i] += dp[i-1];
			dp[i] %= MOD;
			if(i-2>=0) {
				dp[i] += dp[i-2];
				dp[i] %= MOD;
			}
		} {
			if(j<M && a.get(j) == i) {
				j++;
				continue;
			}
			dp[i] += dp[i-1];
			dp[i] %= MOD;
			if(i-2>=0) {
				dp[i] += dp[i-2];
				dp[i] %= MOD;
			}
		} if(j<M && a.get(j) == i) {
				j++;
				continue;
			} j<M && a.get(j) == i j<M j M a.get(j) == i a.get(j) a.get a j i {
				j++;
				continue;
			} j++ j continue; dp[i] += dp[i-1] dp[i] dp i dp[i-1] dp i-1 i 1 dp[i] %= MOD dp[i] dp i MOD if(i-2>=0) {
				dp[i] += dp[i-2];
				dp[i] %= MOD;
			} i-2>=0 i-2 i 2 0 {
				dp[i] += dp[i-2];
				dp[i] %= MOD;
			} dp[i] += dp[i-2] dp[i] dp i dp[i-2] dp i-2 i 2 dp[i] %= MOD dp[i] dp i MOD System.out.println(dp[N]) System.out.println System.out System System.out dp[N] dp N sc.close() sc.close sc public class Main {
	public static void main(String[] args) {
		Main main = new Main();
		main.run();
	}

	public void run() {
		Scanner sc = new Scanner(System.in);
		int N=sc.nextInt();
		int M=sc.nextInt();
		ArrayList<Integer> a = new ArrayList<Integer>();
		for(int i=0; i<M; i++) {
			a.add(sc.nextInt());
		}

		int MOD = 1000000007;
		long dp[] = new long[N+1];
		dp[0] = 1;
		int j=0;
		for(int i=1; i<=N; i++) {
			if(j<M && a.get(j) == i) {
				j++;
				continue;
			}
			dp[i] += dp[i-1];
			dp[i] %= MOD;
			if(i-2>=0) {
				dp[i] += dp[i-2];
				dp[i] %= MOD;
			}
		}
		System.out.println(dp[N]);
		sc.close();
	}
} public class Main {
	public static void main(String[] args) {
		Main main = new Main();
		main.run();
	}

	public void run() {
		Scanner sc = new Scanner(System.in);
		int N=sc.nextInt();
		int M=sc.nextInt();
		ArrayList<Integer> a = new ArrayList<Integer>();
		for(int i=0; i<M; i++) {
			a.add(sc.nextInt());
		}

		int MOD = 1000000007;
		long dp[] = new long[N+1];
		dp[0] = 1;
		int j=0;
		for(int i=1; i<=N; i++) {
			if(j<M && a.get(j) == i) {
				j++;
				continue;
			}
			dp[i] += dp[i-1];
			dp[i] %= MOD;
			if(i-2>=0) {
				dp[i] += dp[i-2];
				dp[i] %= MOD;
			}
		}
		System.out.println(dp[N]);
		sc.close();
	}
} Main
import java.util.*;

public class Main {
	public static void main(String[] args) {
		Main main = new Main();
		main.run();
	}

	public void run() {
		Scanner sc = new Scanner(System.in);
		int N=sc.nextInt();
		int M=sc.nextInt();
		ArrayList<Integer> a = new ArrayList<Integer>();
		for(int i=0; i<M; i++) {
			a.add(sc.nextInt());
		}

		int MOD = 1000000007;
		long dp[] = new long[N+1];
		dp[0] = 1;
		int j=0;
		for(int i=1; i<=N; i++) {
			if(j<M && a.get(j) == i) {
				j++;
				continue;
			}
			dp[i] += dp[i-1];
			dp[i] %= MOD;
			if(i-2>=0) {
				dp[i] += dp[i-2];
				dp[i] %= MOD;
			}
		}
		System.out.println(dp[N]);
		sc.close();
	}
}
