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"
"io"
"os"
"strconv"
)
func main() {
data, _ := io.ReadAll(os.Stdin)
idx := 0
nextInt := func() int {
for idx < len(data) && (data[idx] < '0' || data[idx] > '9') {
idx++
}
val := 0
for idx < len(data) && data[idx] >= '0' && data[idx] <= '9' {
val = val*10 + int(data[idx]-'0')
idx++
}
return val
}
n := nextInt()
k := nextInt()
m := nextInt()
l := make([]int, m)
r := make([]int, m)
x := make([]int, m)
for i := 0; i < m; i++ {
l[i] = nextInt()
r[i] = nextInt()
x[i] = nextInt()
}
const MOD int = 998244353
diff := make([]int, n+3)
needAt := make([]int, n+1)
pref := make([]int, n+1)
ans := 1
mask := 1
for bit := 0; bit < k; bit++ {
for i := 0; i <= n+1; i++ {
diff[i] = 0
}
for i := 0; i <= n; i++ {
needAt[i] = 0
}
for i := 0; i < m; i++ {
if x[i]&mask != 0 {
diff[l[i]]++
diff[r[i]+1]--
} else {
if l[i] > needAt[r[i]] {
needAt[r[i]] = l[i]
}
}
}
pref[0] = 1
cover := 0
need := 0
for i := 1; i <= n; i++ {
cover += diff[i]
val := pref[i-1]
if need > 0 {
val -= pref[need-1]
if val < 0 {
val += MOD
}
}
if cover > 0 {
val = 0
}
sum := pref[i-1] + val
if sum >= MOD {
sum -= MOD
}
pref[i] = sum
if needAt[i] > need {
need = needAt[i]
}
}
cnt := pref[n]
if need > 0 {
cnt -= pref[need-1]
if cnt < 0 {
cnt += MOD
}
}
ans = int(int64(ans) * int64(cnt) % int64(MOD))
mask <<= 1
}
w := bufio.NewWriterSize(os.Stdout, 1<<20)
w.WriteString(strconv.Itoa(ans))
w.Flush()
}
```