#include #include #include #define rep(i, n) for(int i = 0; i < n; i++) using namespace std; const int MOD = 1e9+7; int main() { cin.tie(0)->sync_with_stdio(0); int n; cin >> n; string s; cin >> s; // note (n+1) * (sqrt(2n) + 1) * MOD < 10^17 < 2^63 // so only a final mod is necessary static_assert(sizeof(long) >= 2 * sizeof(int)); long ans = 0; const int jumps = sqrt(2*n)+1; vector dp(2*n+1, vector(jumps, 0)); dp[0][0] = 1; rep(i, n) { if (s[i] == '#') continue; rep(j, jumps) dp[i+1][j] = (dp[i+1][j] + dp[i][j]) % MOD; rep(j, jumps-1) dp[i+j+2][j+1] = (dp[i+j+2][j+1] + dp[i][j]) % MOD; } rep(i, n+1) rep(j, jumps) ans += dp[n+i][j]; cout << ans % MOD << '\n'; }