#include<iostream>
#include<utility>
using namespace std;

#define rep(i, n) for (int i = 0; i < (int)(n); i++)

constexpr int Q_MAX = 1000006;
bool is_prime[Q_MAX];
void init() {
    rep(i, Q_MAX) is_prime[i] = true;
    is_prime[0] = is_prime[1] = false;
    rep(i, Q_MAX) if (i >= 2) {
        if (is_prime[i]) {
            for (int j = i * 2; j < Q_MAX; j += i) is_prime[j] = false;
        }
    }
}

int n,a[1<<17];
long long dp[1<<17];
long long mod=1e9+7;
int main()
{
	cin>>n;
	for(int i=0;i<n;i++)
	{
		cin>>a[i];
	}
	init();
	if(n==1)
	{
		cout<<is_prime[a[0]]<<endl;
		return 0;
	}
	dp[0]=is_prime[a[0]];
	for(int i=0;i<n;i++)
	{
		if(!is_prime[a[i]])continue;
		if(is_prime[a[i+2]]&&a[i+2]>a[i])dp[i+2]=(dp[i+2]+dp[i])%mod;
		if(is_prime[a[i+1]]&&a[i+1]>a[i])dp[i+1]=(dp[i+1]+dp[i])%mod;
	}
	cout<<((dp[n-1]+dp[n-2])%mod)<<endl;
	return 0;
}
