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