Problem:
MathJax.Hub.Config({ tex2jax: { inlineMath: [["$","$"], ["\\(","\\)"]], processEscapes: true }});

Circumscribed Circle of A Triangle.

Write a program which prints the central coordinate $(p_x, p_y)$ and the radius $r$ of a circumscribed circle of a triangle which is constructed by three points $(x_1, y_1)$, $(x_2, y_2)$ and $(x_3, y_3)$ on the plane surface.

Input

Input consists of several datasets. In the first line, the number of datasets $n$ is given. Each dataset consists of:

$x_1$ $y_1$ $x_2$ $y_2$ $x_3$ $y_3$

in a line. All the input are real numbers.

Output

For each dataset, print $p_x$, $p_y$ and $r$ separated by a space in a line. Print the solution to three places of decimals. Round off the solution to three decimal places.

Constraints

$-100 \leq x_1, y_1, x_2, y_2, x_3, y_3 \leq 100$

$ n \leq 20$

Sample Input

1
0.0 0.0 2.0 0.0 2.0 2.0

Output for the Sample Input

1.000 1.000 1.414

Solution in JAVA (judge verdict: Accepted)

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
	/**
	 * ????§???¢??????????????\???????????¨???????§???¢????????\??????????????¨??????????±???????
	 *
	 * @param args
	 *            ?????¨?????????
	 * @throws IOException
	 */
	public static void main(String[] args) throws IOException {
		try (BufferedReader br = new BufferedReader(new InputStreamReader(System.in))) {
			int lineNum = Integer.parseInt(br.readLine());
			for (int i = 0; i < lineNum; i++) {
				String line = br.readLine();
				String[] sCoordinates = line.split(" ");
				float[] fCoordinates = new float[6];
				for (int j = 0; j < 6; j++) {
					fCoordinates[j] = Float.parseFloat(sCoordinates[j]);
				}
				Circle circle = new Circle(fCoordinates[0], fCoordinates[1], fCoordinates[2], fCoordinates[3],
						fCoordinates[4], fCoordinates[5]);
				System.out.printf("%.3f %.3f %.3f\n", circle.getCenterX(), circle.getCenterY(), circle.getRadius());
			}
		}
	}

	public static class Circle {
		private float centerX;
		private float centerY;
		private float radius;

		public Circle(float x1, float y1, float x2, float y2, float x3, float y3) {

			/**
			 * ?¨???????????????????????????????(x1, y1)???????????¨????????§?¨???????????????????
			 */
			x2 = x2 - x1;
			y2 = y2 - y1;

			x3 = x3 - x1;
			y3 = y3 - y1;

			/**
			 * X^2 + Y^2 - 2mX - 2nY + l = 0 ????§£?????????????????¨??????????±???????
			 */
			centerY = ((x3 * x3 + y3 * y3) * x2 - (x2 * x2 + y2 * y2) * x3) / (2.0f * (y3 * x2 - y2 * x3));
			centerX = ((x3 * x3 + y3 * y3) * y2 - (x2 * x2 + y2 * y2) * y3) / (2.0f * (x3 * y2 - x2 * y3));

			radius = (float) Math.sqrt(centerX * centerX + centerY * centerY);

			/**
			 * ????????§?¨???????????????????
			 */
			centerX += x1;
			centerY += y1;
		}

		public float getCenterX() {
			return centerX;
		}

		public float getCenterY() {
			return centerY;
		}

		public float getRadius() {
			return radius;
		}
	}

}