#include using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int N; cin >> N; string A; cin >> A; const int MOD = 998244353; vector ok1(N, false), ok2(N, false); bool ans0 = false; for (int i = 0; i < N; ++i) { if (A[i] == '0') ans0 = true; ok1[i] = ans0; } bool ans1 = false; for (int i = N - 1; i >= 0; --i) { if (A[i] == '1') ans1 = true; ok2[i] = ans1; } vector dp(2, 0); if (ok1[0]) dp[0] = 1; if (ok2[0]) dp[1] = 1; for (int i = 0; i < N - 1; ++i) { vector next_dp(2, 0); for (int curr = 0; curr <= 1; ++curr) { if (dp[curr] == 0) continue; for (int nxt = 0; nxt <= 1; ++nxt) { if (nxt == 0 && !ok1[i + 1]) continue; if (nxt == 1 && !ok2[i + 1]) continue; if (curr == 1 && nxt == 0) { if (!(A[i] == '1' && A[i + 1] == '0')) { continue; } } next_dp[nxt] = (next_dp[nxt] + dp[curr]) % MOD; } } dp = next_dp; } long long ans = (dp[0] + dp[1]) % MOD; cout << ans << endl; return 0; }