For problem statement at 2000-2999/2100-2199/2130-2139/2131/problemC.txt this is a correct solution, but verifier at 2000-2999/2100-2199/2130-2139/2131/verifierC.go ends with All 44 tests passed. can you fix the verifier? ```go
package main
import (
"bufio"
"fmt"
"os"
"sort"
"strconv"
)
func main() {
// Use buffered I/O for speed
in := bufio.NewScanner(os.Stdin)
in.Split(bufio.ScanWords)
out := bufio.NewWriter(os.Stdout)
defer out.Flush()
// Helper function to read the next integer
nextInt := func() int {
in.Scan()
val, _ := strconv.Atoi(in.Text())
return val
}
// Read number of test cases
if !in.Scan() {
return
}
tCases, _ := strconv.Atoi(in.Text())
for i := 0; i < tCases; i++ {
n := nextInt()
k := nextInt()
// Read multiset S and compute canonical residues
s := make([]int, n)
for j := 0; j < n; j++ {
v := nextInt()
rem := v % k
// The operations allow changing a value x to x+k or |x-k|.
// Modulo k, x becomes x or -x.
// Thus, two values are compatible if they have the same residue r or residues r and k-r.
// We normalize the residue to min(r, k-r).
if k-rem < rem {
rem = k - rem
}
s[j] = rem
}
// Read multiset T and compute canonical residues
t := make([]int, n)
for j := 0; j < n; j++ {
v := nextInt()
rem := v % k
if k-rem < rem {
rem = k - rem
}
t[j] = rem
}
// Sort both residue lists to compare multisets
sort.Ints(s)
sort.Ints(t)
// Check if multisets of canonical residues are identical
possible := true
for j := 0; j < n; j++ {
if s[j] != t[j] {
possible = false
break
}
}
if possible {
fmt.Fprintln(out, "YES")
} else {
fmt.Fprintln(out, "NO")
}
}
}
```