For problem statement at 1000-1999/1800-1899/1830-1839/1833/problemF.txt this is a correct solution, but verifier at 1000-1999/1800-1899/1830-1839/1833/verifierF.go ends with All tests passed can you fix the verifier? ```go
package main
import (
"bufio"
"fmt"
"os"
"sort"
"strconv"
)
const MOD = 1000000007
func main() {
scanner := bufio.NewScanner(os.Stdin)
scanner.Split(bufio.ScanWords)
out := bufio.NewWriter(os.Stdout)
defer out.Flush()
scanInt := func() int {
scanner.Scan()
val, _ := strconv.Atoi(scanner.Text())
return val
}
if !scanner.Scan() {
return
}
t, _ := strconv.Atoi(scanner.Text())
for i := 0; i < t; i++ {
n := scanInt()
m := scanInt()
a := make([]int, n)
for j := 0; j < n; j++ {
a[j] = scanInt()
}
sort.Ints(a)
type pair struct {
val, cnt int
}
var b []pair
if n > 0 {
curr := a[0]
cnt := 1
for j := 1; j < n; j++ {
if a[j] == curr {
cnt++
} else {
b = append(b, pair{curr, cnt})
curr = a[j]
cnt = 1
}
}
b = append(b, pair{curr, cnt})
}
if len(b) < m {
fmt.Fprintln(out, 0)
continue
}
var ans int64 = 0
var curProd int64 = 1
for j := 0; j < m; j++ {
curProd = (curProd * int64(b[j].cnt)) % MOD
}
if b[m-1].val == b[0].val+m-1 {
ans = (ans + curProd) % MOD
}
for j := 1; j <= len(b)-m; j++ {
prevCnt := int64(b[j-1].cnt)
nextCnt := int64(b[j+m-1].cnt)
var inv int64 = 1
base := prevCnt
exp := MOD - 2
for exp > 0 {
if exp&1 == 1 {
inv = (inv * base) % MOD
}
base = (base * base) % MOD
exp >>= 1
}
curProd = (curProd * inv) % MOD
curProd = (curProd * nextCnt) % MOD
if b[j+m-1].val == b[j].val+m-1 {
ans = (ans + curProd) % MOD
}
}
fmt.Fprintln(out, ans)
}
}
```