For problem statement at 2000-2999/2100-2199/2150-2159/2153/problemC.txt this is a correct solution, but verifier at 2000-2999/2100-2199/2150-2159/2153/verifierC.go ends with All 61 tests passed. can you fix the verifier? ```go
package main
import (
"fmt"
"sort"
)
func solve() {
var n int
fmt.Scan(&n)
a := make([]int, n)
for i := 0; i < n; i++ {
fmt.Scan(&a[i])
}
count := make(map[int]int)
for _, x := range a {
count[x]++
}
pairs := []int{}
leftovers := []int{}
for length, cnt := range count {
for i := 0; i < cnt/2; i++ {
pairs = append(pairs, length)
}
if cnt%2 == 1 {
leftovers = append(leftovers, length)
}
}
sort.Sort(sort.Reverse(sort.IntSlice(pairs)))
sort.Sort(sort.Reverse(sort.IntSlice(leftovers)))
var totalPairsSum int64
for _, p := range pairs {
totalPairsSum += int64(p)
}
best := int64(0)
if len(pairs) >= 1 {
for _, mid := range leftovers {
perimeter := 2*totalPairsSum + int64(mid)
maxSide := int64(pairs[0])
if int64(mid) > maxSide {
maxSide = int64(mid)
}
if perimeter > 2*maxSide {
if perimeter > best {
best = perimeter
}
}
}
mid := pairs[len(pairs)-1]
remainingPairsSum := totalPairsSum - int64(mid)
perimeter := 2*remainingPairsSum + int64(mid)
maxSide := int64(mid)
if len(pairs) > 1 && int64(pairs[0]) > maxSide {
maxSide = int64(pairs[0])
}
if perimeter > 2*maxSide {
if perimeter > best {
best = perimeter
}
}
}
if len(pairs) >= 2 {
perimeter := 2 * totalPairsSum
if perimeter > best {
best = perimeter
}
}
if len(pairs) >= 1 {
if len(leftovers) >= 2 {
mid1, mid2 := leftovers[0], leftovers[1]
perimeter := 2*totalPairsSum + int64(mid1) + int64(mid2)
maxSide := int64(pairs[0])
if int64(mid1) > maxSide {
maxSide = int64(mid1)
}
if int64(mid2) > maxSide {
maxSide = int64(mid2)
}
if perimeter > 2*maxSide {
if perimeter > best {
best = perimeter
}
}
}
if len(leftovers) >= 1 && len(pairs) >= 2 {
mid1 := leftovers[0]
mid2 := pairs[len(pairs)-1]
remainingPairsSum := totalPairsSum - int64(mid2)
perimeter := 2*remainingPairsSum + int64(mid1) + int64(mid2)
maxSide := int64(pairs[0])
if int64(mid1) > maxSide {
maxSide = int64(mid1)
}
if int64(mid2) > maxSide {
maxSide = int64(mid2)
}
if perimeter > 2*maxSide {
if perimeter > best {
best = perimeter
}
}
}
if len(pairs) >= 3 {
mid1 := pairs[len(pairs)-2]
mid2 := pairs[len(pairs)-1]
remainingPairsSum := totalPairsSum - int64(mid1) - int64(mid2)
perimeter := 2*remainingPairsSum + int64(mid1) + int64(mid2)
maxSide := int64(pairs[0])
if int64(mid1) > maxSide {
maxSide = int64(mid1)
}
if int64(mid2) > maxSide {
maxSide = int64(mid2)
}
if perimeter > 2*maxSide {
if perimeter > best {
best = perimeter
}
}
}
}
fmt.Println(best)
}
func main() {
var t int
fmt.Scan(&t)
for i := 0; i < t; i++ {
solve()
}
}
```