#include #include using namespace std; using namespace atcoder; const long nPrime = 1000000007; //const long nPrime = 998244353; typedef long long ll; int main() { long n; cin >> n; vector> vviDP(3,vector(n+1,0)); vviDP[1][0] = 1; for(long i = 0; i < n; i++){ long a; cin >> a; if(a == 50){ vviDP[0][i+1] = vviDP[0][i]; vviDP[1][i+1] = vviDP[1][i]; vviDP[2][i+1] = vviDP[0][i] + vviDP[1][i] + 2 * vviDP[2][i]; } else if (a > 50){ vviDP[0][i+1] = vviDP[0][i] + vviDP[1][i]; vviDP[1][i+1] = vviDP[1][i] + vviDP[0][i]; vviDP[2][i+1] = 2 * vviDP[2][i]; } else { vviDP[0][i+1] = 2 * vviDP[0][i]; vviDP[1][i+1] = 2 * vviDP[1][i]; vviDP[2][i+1] = 2 * vviDP[2][i]; } vviDP[0][i+1] %= nPrime; vviDP[1][i+1] %= nPrime; vviDP[2][i+1] %= nPrime; } cout << vviDP[0][n] << endl; return 0; }