#include #include #define MOD 998244353 #define MAXN 500005 int N; char A[MAXN]; int has1_suffix[MAXN]; int has0_prefix[MAXN]; int main() { scanf("%d", &N); scanf("%s", A + 1); // suffix: can become 1 has1_suffix[N+1] = 0; for (int i = N; i >= 1; i--) { has1_suffix[i] = has1_suffix[i+1] || (A[i] == '1'); } // prefix: can become 0 has0_prefix[0] = 0; for (int i = 1; i <= N; i++) { has0_prefix[i] = has0_prefix[i-1] || (A[i] == '0'); } long long ans = 0; for (int k = 0; k <= N; k++) { int ok = 1; if (k > 0) { if (!has1_suffix[k]) ok = 0; } if (k < N) { if (!has0_prefix[k+1]) ok = 0; } if (ok) ans++; } printf("%lld\n", ans % MOD); return 0; }