#include #include #define MOD 998244353LL #define MAXN 500005 char s[MAXN]; int main() { int N; scanf("%d", &N); scanf("%s", s); long long ans = 1; int i = 0; while (i < N) { if (s[i] == '1') { // pure 1-run: contributes 1 while (i < N && s[i] == '1') i++; } else { // zero-run int a = 0; while (i < N && s[i] == '0') { a++; i++; } // if followed by one-run, this pair contributes (a+b+1) if (i < N && s[i] == '1') { int b = 0; while (i < N && s[i] == '1') { b++; i++; } ans = (ans * (a + b + 1LL)) % MOD; } // else: trailing pure 0-run, contributes 1 } } printf("%lld\n", ans % MOD); return 0; }