← Home
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)
}