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.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Scanner;
import java.util.function.UnaryOperator;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        Map<String, List<Double>> cache = new HashMap<String, List<Double>>();

        int cnt = Integer.valueOf(sc.nextLine());
        while (0<cnt--) {
            String values = sc.nextLine();
            List<Double> inputs = Stream.of(values.split(" ")).map(input->Double.valueOf(input)).collect(Collectors.toList());
            Double min_x = Math.min(inputs.get(0), Math.min(inputs.get(2), inputs.get(4)));
            Double max_x = Math.max(inputs.get(0), Math.max(inputs.get(2), inputs.get(4)));

            Double min_y = Math.min(inputs.get(1), Math.min(inputs.get(3), inputs.get(5)));
            Double max_y = Math.max(inputs.get(1), Math.max(inputs.get(3), inputs.get(5)));

            Double middle_x = (min_x+max_x)/2;
            Double middle_y = (min_y+max_y)/2;

            System.out.printf("%.3f %.3f %.3f", round.apply(middle_x), round.apply(middle_y), round.apply(Math.sqrt((middle_x - min_x)*(middle_x - min_x)+(middle_y - min_y)*(middle_y - min_y))));
            System.out.println();
        }
    }

    public static UnaryOperator<Double> round = l -> {
        return Double.valueOf(Math.round(l*1000))/1000;
    };
}