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 C# (judge verdict: Accepted)

using System;
using System.Collections.Generic;
using System.Linq;

namespace AOJ
{
  class Program
  {
    public static void Main(string[] args)
    {
      Console.ReadLine();
      foreach (var points in ReadNumbers())
      {
        var x1 = points[0];
        var y1 = points[1];
        var x2 = points[2];
        var y2 = points[3];
        var x3 = points[4];
        var y3 = points[5];
        var det = 4 * ((x1 - x2) * (y2 - y3) - (y1 - y2) * (x2 - x3));
        var c_x = (y1 - y2) * (y1 + y2) + (x1 - x2) * (x1 + x2);
        var c_y = (y2 - y3) * (y2 + y3) + (x2 - x3) * (x2 + x3);
        var x = (2 / det) * ((y2 - y3) * c_x + (y2 - y1) * c_y);
        var y = (2 / det) * ((x3 - x2) * c_x + (x1 - x2) * c_y);
        var lenSquare = new[]
        {
          Math.Pow(x2 - x1, 2.0) + Math.Pow(y2 - y1, 2.0),
          Math.Pow(x3 - x2, 2.0) + Math.Pow(y3 - y2, 2.0),
          Math.Pow(x1 - x3, 2.0) + Math.Pow(y1 - y3, 2.0)
        };
        var len = lenSquare.Select(l => Math.Sqrt(l)).ToArray();
        var A = Math.Acos((lenSquare[1] + lenSquare[2] - lenSquare[0]) / (2 * len[1] * len[2]));
        var r = (len[0] / Math.Sin(A)) / 2;
        Console.WriteLine("{0:F3} {1:F3} {2:F3}", x, y, r);
      }
    }

    static IEnumerable<double[]> ReadNumbers()
    {
      string line;
      while ((line = Console.ReadLine()) != null)
        yield return line.Split(' ').Select(s => double.Parse(s)).ToArray();
    }
  }
}