package main import ( "bufio" "fmt" "os" ) func main() { var n int var a string reader := bufio.NewReader(os.Stdin) fmt.Fscan(reader, &n, &a) const mod = 998244353 canZero := make([]bool, n) canOne := make([]bool, n) existsZero := false for i := 0; i < n; i++ { if a[i] == '0' { existsZero = true } canZero[i] = existsZero } existsOne := false for i := n - 1; i >= 0; i-- { if a[i] == '1' { existsOne = true } canOne[i] = existsOne } dp := make([][2]int, n+1) if canZero[0] { dp[1][0] = 1 } if canOne[0] { dp[1][1] = 1 } for i := 2; i <= n; i++ { idx := i - 1 sumPrev := (dp[i-1][0] + dp[i-1][1]) % mod if canZero[idx] { dp[i][0] = sumPrev } if canOne[idx] { dp[i][1] = sumPrev } } fmt.Println((dp[n][0] + dp[n][1]) % mod) }