For problem statement at 1000-1999/1200-1299/1220-1229/1227/problemF1.txt this is a correct solution, but verifier at 1000-1999/1200-1299/1220-1229/1227/verifierF1.go ends with case 2 failed
input:
3 1
3 3 2
expected:-1
actual:998244352
exit status 1 can you fix the verifier? ```go
package main
import (
"bufio"
"fmt"
"os"
)
const MOD = 998244353
func power(base, exp int) int {
res := 1
base %= MOD
if base < 0 {
base += MOD
}
for exp > 0 {
if exp%2 == 1 {
res = (res * base) % MOD
}
base = (base * base) % MOD
exp /= 2
}
return res
}
func main() {
reader := bufio.NewReader(os.Stdin)
var n, k int
if _, err := fmt.Fscan(reader, &n, &k); err != nil {
return
}
h := make([]int, n)
for i := 0; i < n; i++ {
fmt.Fscan(reader, &h[i])
}
D := 0
E := 0
for i := 0; i < n; i++ {
if h[i] != h[(i+1)%n] {
D++
} else {
E++
}
}
fact := make([]int, D+1)
invFact := make([]int, D+1)
fact[0] = 1
invFact[0] = 1
for i := 1; i <= D; i++ {
fact[i] = (fact[i-1] * i) % MOD
invFact[i] = power(fact[i], MOD-2)
}
Z := 0
kMinus2 := (k - 2) % MOD
if kMinus2 < 0 {
kMinus2 += MOD
}
for i := 0; i <= D/2; i++ {
ways := fact[D]
ways = (ways * invFact[i]) % MOD
ways = (ways * invFact[i]) % MOD
ways = (ways * invFact[D-2*i]) % MOD
p := power(kMinus2, D-2*i)
term := (ways * p) % MOD
Z = (Z + term) % MOD
}
totalD := power(k, D)
ansD := (totalD - Z + MOD) % MOD
ansD = (ansD * 499122177) % MOD
ans := (ansD * power(k, E)) % MOD
fmt.Println(ans)
}
```