← Home
For problem statement at 1000-1999/1300-1399/1320-1329/1327/problemF.txt this is a correct solution, but verifier at 1000-1999/1300-1399/1320-1329/1327/verifierF.go ends with All tests passed. can you fix the verifier? ```go
package main

import (
	"bufio"
	"fmt"
	"os"
)

func nextInt(r *bufio.Reader) int {
	res := 0
	b, err := r.ReadByte()
	if err != nil {
		return 0
	}
	for b < '0' || b > '9' {
		b, err = r.ReadByte()
		if err != nil {
			return 0
		}
	}
	for b >= '0' && b <= '9' {
		res = res*10 + int(b-'0')
		b, _ = r.ReadByte()
	}
	return res
}

func main() {
	reader := bufio.NewReaderSize(os.Stdin, 65536)
	n := nextInt(reader)
	if n == 0 {
		return
	}
	k := nextInt(reader)
	m := nextInt(reader)

	l := make([]int, m)
	r := make([]int, m)
	x := make([]int, m)

	for i := 0; i < m; i++ {
		l[i] = nextInt(reader)
		r[i] = nextInt(reader)
		x[i] = nextInt(reader)
	}

	MOD := 998244353
	totalWays := 1

	diff := make([]int, n+2)
	req := make([]int, n+2)
	forced := make([]bool, n+2)
	dp := make([]int, n+2)
	S := make([]int, n+2)

	for b := 0; b < k; b++ {
		for i := 0; i <= n+1; i++ {
			diff[i] = 0
			req[i] = 0
		}

		for i := 0; i < m; i++ {
			if (x[i] & (1 << b)) != 0 {
				diff[l[i]]++
				diff[r[i]+1]--
			} else {
				if l[i] > req[r[i]] {
					req[r[i]] = l[i]
				}
			}
		}

		currentDiff := 0
		for i := 1; i <= n; i++ {
			currentDiff += diff[i]
			forced[i] = currentDiff > 0
			if req[i-1] > req[i] {
				req[i] = req[i-1]
			}
		}

		dp[0] = 1
		S[0] = 1
		for i := 1; i <= n+1; i++ {
			if i <= n && forced[i] {
				dp[i] = 0
			} else {
				L := req[i-1]
				if L > i-1 {
					dp[i] = 0
				} else {
					dp[i] = S[i-1]
					if L > 0 {
						dp[i] = (dp[i] - S[L-1] + MOD) % MOD
					}
				}
			}
			S[i] = (S[i-1] + dp[i]) % MOD
		}

		totalWays = int((int64(totalWays) * int64(dp[n+1])) % int64(MOD))
		if totalWays == 0 {
			break
		}
	}

	fmt.Println(totalWays)
}
```