#include using namespace std; const int MOD = 998244353; int main() { int N; string A; cin >> N >> A; vector has_zero_left(N, 0); vector has_one_right(N, 0); // prefix: zero for (int i = 0; i < N; i++) { if (A[i] == '0') { has_zero_left[i] = 1; } if (i > 0) { has_zero_left[i] |= has_zero_left[i - 1]; } } // suffix: one for (int i = N - 1; i >= 0; i--) { if (A[i] == '1') { has_one_right[i] = 1; } if (i < N - 1) { has_one_right[i] |= has_one_right[i + 1]; } } int free_cnt = 0; for (int i = 0; i < N; i++) { if (has_zero_left[i] && has_one_right[i]) { free_cnt++; } } // compute 2^free_cnt mod long long ans = 1; for (int i = 0; i < free_cnt; i++) { ans = (ans * 2) % MOD; } cout << ans << endl; return 0; }