package main
import (
"bufio"
"fmt"
"math"
"os"
)
func main() {
reader := bufio.NewReader(os.Stdin)
var n int
if _, err := fmt.Fscan(reader, &n); err != nil {
return
}
cx := make([]float64, n)
cy := make([]float64, n)
cr := make([]float64, n)
for i := 0; i < n; i++ {
fmt.Fscan(reader, &cx[i], &cy[i], &cr[i])
}
x, y := cx[0], cy[0]
step := 2e6
iters := 400000000 / n
if iters > 50000 {
iters = 50000
}
if iters < 4000 {
iters = 4000
}
decay := math.Pow(1e-10/step, 1.0/float64(iters))
bestX, bestY := x, y
bestVal := -1e18
for iter := 0; iter < iters; iter++ {
minVal := 1e18
minI := 0
for i := 0; i < n; i++ {
dx := x - cx[i]
dy := y - cy[i]
d := math.Sqrt(dx*dx + dy*dy)
val := cr[i] - d
if val < minVal {
minVal = val
minI = i
}
}
if minVal > bestVal {
bestVal = minVal
bestX = x
bestY = y
}
dx := cx[minI] - x
dy := cy[minI] - y
d := math.Sqrt(dx*dx + dy*dy)
if d > 1e-12 {
x += step * dx / d
y += step * dy / d
}
step *= decay
}
fmt.Printf("%.9f %.9f %.9f\n", bestX, bestY, bestVal)
}