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

object Main extends App {
  def distSq(p1:(Double,Double), p2:(Double, Double)): Double = {
    math.pow(p1._1 - p2._1, 2) + math.pow(p1._2 - p2._2, 2)
  }

  def getCenterPoint(a: Double, b: Double, c: Double, d: Double, e: Double, f: Double) = {
    def removeSignZero(z: Double) = if (math.abs(z) == 0) 0.0 else z
    val det = (a * e - b * d)
    Seq((c * e - b * f) / det, (a * f - c * d) / det).map(removeSignZero)
  }

  val n = readInt
  (1 to n)
    .map(_ => readLine.split(" ").map(_.toDouble))
    .map { case Array(x1, y1, x2, y2, x3, y3) => {
      val p1 = (x1, y1)
      val p2 = (x2, y2)
      val p3 = (x3, y3)
      val (aSq, bSq, cSq) = (distSq(p1, p2), distSq(p2, p3), distSq(p3, p1))
      val cosA = (bSq + cSq - aSq) / (2 * math.sqrt(bSq * cSq))
      val sinA = math.sqrt(1 - math.pow(cosA, 2))
      val R = math.sqrt(aSq) / (2 * sinA)
      val centers = getCenterPoint(
        2 * x2 - 2 * x1,
        2 * y2 - 2 * y1,
        math.pow(x2, 2) - math.pow(x1, 2) + math.pow(y2, 2) - math.pow(y1, 2),
        2 * x3 - 2 * x2,
        2 * y3 - 2 * y2,
        math.pow(x3, 2) - math.pow(x2, 2) + math.pow(y3, 2) - math.pow(y2, 2)
      )
      Seq(centers(0), centers(1), R).map(d => f"$d%.3f").mkString(" ")
    }}
    .foreach(println)

}