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: Wrong Answer)


import java.math.BigDecimal;
import java.util.Scanner;

public class Main {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Scanner cin = new Scanner(System.in);
		int N=cin.nextInt();
		for(;N--!=0;){
			double x1=cin.nextDouble();
			double y1=cin.nextDouble();
			double x2=cin.nextDouble();
			double y2=cin.nextDouble();
			double x3=cin.nextDouble();
			double y3=cin.nextDouble();
			double p = ((y1-y3)*(y1*y1 -y2*y2 +x1*x1 -x2*x2) -(y1-y2)*(y1*y1 -y3*y3 +x1*x1 -x3*x3)) / (2*(y1-y3)*(x1-x2)-2*(y1-y2)*(x1-x3));
			double q = ((x1-x3)*(x1*x1 -x2*x2 +y1*y1 -y2*y2) -(x1-x2)*(x1*x1 -x3*x3 +y1*y1 -y3*y3)) / (2*(x1-x3)*(y1-y2)-2*(x1-x2)*(y1-y3));
			double dist = Math.sqrt(Math.pow(x1-p, 2)+Math.pow(y2-q, 2));
			BigDecimal ans1 = new BigDecimal(String.valueOf(p));
			BigDecimal ans2= new BigDecimal(String.valueOf(q));
			BigDecimal ans3 = new BigDecimal(String.valueOf(dist));
			p=ans1.setScale(3,BigDecimal.ROUND_HALF_UP).doubleValue();
			q=ans2.setScale(3,BigDecimal.ROUND_HALF_UP).doubleValue();
			dist=ans3.setScale(3,BigDecimal.ROUND_HALF_UP).doubleValue();
			System.out.println(p+" "+q+" "+dist);
		}
		
		
	}

}