```go
package main
import (
"bufio"
"fmt"
"os"
"strconv"
"strings"
)
func main() {
scanner := bufio.NewScanner(os.Stdin)
scanner.Scan()
n, _ := strconv.Atoi(scanner.Text())
for i := 0; i < n; i++ {
scanner.Scan()
m, _ := strconv.Atoi(scanner.Text())
scanner.Scan()
parts := strings.Fields(scanner.Text())
sum := 0.0
maxVal := 0.0
vals := make([]float64, m)
for j, p := range parts {
v, _ := strconv.ParseFloat(p, 64)
vals[j] = v
sum += v
if v > maxVal {
maxVal = v
}
}
mean := sum / float64(m)
variance := 0.0
for _, v := range vals {
diff := v - mean
variance += diff * diff
}
variance /= float64(m)
var estimate float64
if variance > 1.5*mean {
estimate = maxVal * float64(m+1) / float64(m)
} else {
estimate = mean
}
fmt.Println(int(estimate + 0.5))
}
}
```