For problem statement at 1000-1999/1100-1199/1140-1149/1140/problemE.txt this is a correct solution, but verifier at 1000-1999/1100-1199/1140-1149/1140/verifierE.go ends with All tests passed can you fix the verifier? ```go
package main
import (
"bufio"
"fmt"
"os"
)
const MOD = 998244353
func power(base, exp int64) int64 {
res := int64(1)
base %= MOD
for exp > 0 {
if exp%2 == 1 {
res = (res * base) % MOD
}
base = (base * base) % MOD
exp /= 2
}
return res
}
func solveSubarray(b []int, k int, dp0, P []int64) int64 {
m := len(b)
if m == 0 {
return 1
}
I := make([]int, 0)
for i, val := range b {
if val != -1 {
I = append(I, i)
}
}
if len(I) == 0 {
return int64(k) * power(int64(k-1), int64(m-1)) % MOD
}
ans := int64(1)
ans = ans * power(int64(k-1), int64(I[0])) % MOD
ans = ans * power(int64(k-1), int64(m-1-I[len(I)-1])) % MOD
for j := 0; j < len(I)-1; j++ {
c := I[j+1] - I[j] - 1
L := b[I[j]]
R := b[I[j+1]]
var W int64
if L == R {
W = int64(k-1) * P[c] % MOD
} else {
W = (dp0[c] + int64(k-2)*P[c]) % MOD
}
ans = ans * W % MOD
}
return ans
}
func main() {
reader := bufio.NewReader(os.Stdin)
var n, k int
fmt.Fscan(reader, &n, &k)
a := make([]int, n)
for i := 0; i < n; i++ {
fmt.Fscan(reader, &a[i])
}
b1 := make([]int, 0, n/2+1)
b2 := make([]int, 0, n/2+1)
for i := 0; i < n; i++ {
if i%2 == 0 {
b1 = append(b1, a[i])
} else {
b2 = append(b2, a[i])
}
}
dp0 := make([]int64, n+1)
P := make([]int64, n+1)
dp0[0] = 1
P[0] = 0
for i := 1; i <= n; i++ {
dp0[i] = int64(k-1) * P[i-1] % MOD
P[i] = (dp0[i-1] + int64(k-2)*P[i-1]) % MOD
}
ans1 := solveSubarray(b1, k, dp0, P)
ans2 := solveSubarray(b2, k, dp0, P)
total := (ans1 * ans2) % MOD
fmt.Println(total)
}
```