#include "bits/stdc++.h" using namespace std; #define DEBUG(x) cout<<#x<<": "< #define vl vector #define vii vector< vector > #define vll vector< vector > #define vs vector #define pii pair #define pis pair #define psi pair #define pll pair #define fi first #define se second #define rep(i,n) for(int i=0;i<(int)(n);i++) #define rep1(i,n) for(int i=1;i<=(int)(n);i++) #define all(c) c.begin(),c.end() const int inf = 1000000001; const ll INF = 2e18; const ll MOD = 1000000007; const ll mod = 1000000009; const double pi = 3.14159265358979323846; #define Sp(p) cout< dp(2020, vll(2, vl(2))); int n; string s; int g(int a, int b, int c) { if (b == 0 && c == 0) return 0; if (a*b*c == 1) return 0; return 1; } ll f(int v0, int v1) { rep(i, n + 1) { rep(j, 2) { rep(k, 2) { dp[i][j][k] = 0; } } } dp[2][v0][v1] = 1; for (int i = 2; i < n; i++) { rep(a, 2) { rep(b, 2) { rep(c, 2) { if (g(a, b, c) + '0' == s[i - 1]) { (dp[i + 1][b][c] += dp[i][a][b]) %= MOD; } } } } } ll res = 0; rep(a, 2) { rep(b, 2) { if (g(a, b, v0) + '0' == s[n - 1] && g(b, v0, v1) + '0' == s[0]) { (res += dp[n][a][b]) %= MOD; } } } return res; } int main() { cin >> n; rep(i, n) { char c; cin >> c; s.push_back(c); } ll ans = 0; rep(v0, 2) { rep(v1, 2) { (ans += f(v0, v1)) %= MOD; } } cout << ans << endl; }