import java.io.*;
import java.util.*;

public class hadron_rs_wa implements Runnable {
    private BufferedReader in;
    private PrintWriter out;
    
    private void check(boolean expr, String msg) {
        if (!expr) {
            throw new Error(msg);
        }
    }
    
    private void checkBounds(long n, long low, long hi, String nStr) {
        check((low <= n) && (n <= hi), nStr + " is not in [" + low + ", " + hi + "]");
    }
    
    private void solve() throws IOException {
        int n = Integer.parseInt(in.readLine());
        checkBounds(n, 1, 3, "n");
        int[] x = new int[n];
        int[] y = new int[n];
        int[] r = new int[n];
        for (int i = 0; i < n; i++) {
            StringTokenizer st = new StringTokenizer(in.readLine());
            x[i] = Integer.parseInt(st.nextToken());
            y[i] = Integer.parseInt(st.nextToken());
            r[i] = Integer.parseInt(st.nextToken());
            checkBounds(x[i], -1000, 1000, "x[i]");
            checkBounds(y[i], -1000, 1000, "y[i]");
            checkBounds(r[i], 1, 1000, "r[i]");
        }
        for (int i = 0; i < n; i++) {
            for (int j = i + 1; j < n; j++) {
                int dist = (x[i] - x[j]) * (x[i] - x[j]) + (y[i] - y[j]) * (y[i] - y[j]);
                check(dist > (r[i] + r[j]) * (r[i] + r[j]), "collider intersection");
            }
        }
        if (n >= 3) {
            for (int i = 0; i < n; i++) {
                for (int j = i + 1; j < n; j++) {
                    for (int k = j + 1; k < n; k++) {
                        int dx1 = x[j] - x[i];
                        int dy1 = y[j] - y[i];
                        int dx2 = x[k] - x[i];
                        int dy2 = y[k] - y[i];
                        check(dx1 * dy2 != dx2 * dy1, "three centers on one line");
                    }
                }
            }
        }
        
        if (n == 1) {
            double xx = x[0] + 1.0;
            double yy = y[0];
            double rr = Math.sqrt(r[0] * r[0] + 1.0);
            out.printf("%.8f %.8f %.8f\n", xx, yy, rr);
            return;
        }
        
        int[] a = new int[2];
        int[] b = new int[2];
        int[] c = new int[2];
        for (int i = 1; i < n; i++) {
            a[i - 1] = -2 * (x[i] - x[0]);
            b[i - 1] = -2 * (y[i] - y[0]);
            c[i - 1] = x[i] * x[i] + y[i] * y[i] - x[0] * x[0] - y[0] * y[0] + r[i] * r[i] - r[0] * r[0];
        }
        if (n == 2) {
            double xx = -a[0] * c[0] / (a[0] * a[0] + b[0] * b[0]);
            double yy = -b[0] * c[0] / (a[0] * a[0] + b[0] * b[0]);
            double rr = Math.sqrt(r[0] * r[0] + (xx - x[0]) * (xx - x[0]) + (yy - y[0]) * (yy - y[0]));
            out.printf("%.8f %.8f %.8f\n", xx, yy, rr);
            return;
        }
        double d = a[0] * b[1] - a[1] * b[0];
        double xx = -(c[0] * b[1] - c[1] * b[0]) / d;
        double yy = -(a[0] * c[1] - a[1] * c[0]) / d;
        double rr = Math.sqrt(r[0] * r[0] + (xx - x[0]) * (xx - x[0]) + (yy - y[0]) * (yy - y[0]));
        out.printf("%.8f %.8f %.8f\n", xx, yy, rr);
    }
    
    public static void main(String[] args) {
        new Thread(new hadron_rs_wa()).start();
    }

    public void run() {
        String problem = getClass().getName().split("_")[0];
        Locale.setDefault(Locale.US);
        try {
            in = new BufferedReader(new FileReader(new File(problem + ".in")));
            out = new PrintWriter(new File(problem + ".out"));
            solve();
            in.close();
            out.close();
        } catch (IOException e) {
            e.printStackTrace();
            System.exit(1);
        }
    }
}
