For problem statement at 0-999/600-699/620-629/621/problemE.txt this is a correct solution, but verifier at 0-999/600-699/620-629/621/verifierE.go ends with All tests passed can you fix the verifier? ```go
package main
import (
"bufio"
"fmt"
"os"
)
const MOD int64 = 1000000007
func main() {
scanner := bufio.NewScanner(os.Stdin)
scanner.Split(bufio.ScanWords)
n := readInt(scanner)
b := readInt(scanner)
k := readInt(scanner)
x := readInt(scanner)
count := make([]int64, 10)
for i := 0; i < n; i++ {
d := readInt(scanner)
count[d]++
}
size := x
T := make([][]int64, size)
for i := range T {
T[i] = make([]int64, size)
}
for oldR := 0; oldR < size; oldR++ {
for d := 1; d <= 9; d++ {
if count[d] == 0 {
continue
}
newR := (oldR*10 + d) % size
T[newR][oldR] = (T[newR][oldR] + count[d]) % MOD
}
}
Tb := matrixPower(T, int64(b), size)
fmt.Println(Tb[k][0] % MOD)
}
func readInt(scanner *bufio.Scanner) int {
scanner.Scan()
res := 0
for _, b := range scanner.Bytes() {
res = res*10 + int(b-'0')
}
return res
}
func multiply(A, B [][]int64, size int) [][]int64 {
C := make([][]int64, size)
for i := range C {
C[i] = make([]int64, size)
}
for i := 0; i < size; i++ {
for k := 0; k < size; k++ {
if A[i][k] == 0 {
continue
}
for j := 0; j < size; j++ {
C[i][j] = (C[i][j] + A[i][k]*B[k][j]) % MOD
}
}
}
return C
}
func matrixPower(M [][]int64, power int64, size int) [][]int64 {
result := make([][]int64, size)
for i := range result {
result[i] = make([]int64, size)
result[i][i] = 1
}
base := M
for power > 0 {
if power&1 == 1 {
result = multiply(result, base, size)
}
base = multiply(base, base, size)
power >>= 1
}
return result
}
```