크래머의 공식

아직 제출이 없습니다시간 제한1초메모리 제한128 MB

문제

세 개의 변수 x1x_1, x2x_2, x3x_3에 대한 일차 방정식 세 개가 있다. 계수 aija_{ij}와 상수 bib_i가 주어지면 연립방정식은 다음과 같이 나타낼 수 있다.

{a11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3\begin{cases} a_{11}x_1 + a_{12}x_2 + a_{13}x_3 = b_1 \\ a_{21}x_1 + a_{22}x_2 + a_{23}x_3 = b_2 \\ a_{31}x_1 + a_{32}x_2 + a_{33}x_3 = b_3 \end{cases}

행렬과 벡터를 이용하면 Ax=bA\mathbf{x} = \mathbf{b}로 쓸 수 있으며, 여기서

Ax=b,A=(a11a12a13a21a22a23a31a32a33),b=(b1b2b3),x=(x1x2x3)A\mathbf{x} = \mathbf{b}, \quad A = \begin{pmatrix} a_{11} & a_{12} & a_{13} \\ a_{21} & a_{22} & a_{23} \\ a_{31} & a_{32} & a_{33} \end{pmatrix}, \quad \mathbf{b} = \begin{pmatrix} b_1 \\ b_2 \\ b_3 \end{pmatrix}, \quad \mathbf{x} = \begin{pmatrix} x_1 \\ x_2 \\ x_3 \end{pmatrix}

크래머 공식을 이용하면 각 해를 두 행렬식(determinant)의 비로 구할 수 있다.

xi=detAidetAx_i = \dfrac{\det A_i}{\det A}

여기서 AiA_i는 행렬 AAii번째 열을 벡터 b\mathbf{b}로 바꾼 행렬이다. 3×33 \times 3 행렬의 행렬식은 다음과 같이 계산한다.

det(a11a12a13a21a22a23a31a32a33)=a11(a22a33a23a32)a12(a21a33a23a31)+a13(a21a32a22a31)\det \begin{pmatrix} a_{11} & a_{12} & a_{13} \\ a_{21} & a_{22} & a_{23} \\ a_{31} & a_{32} & a_{33} \end{pmatrix} = a_{11}(a_{22}a_{33} - a_{23}a_{32}) - a_{12}(a_{21}a_{33} - a_{23}a_{31}) + a_{13}(a_{21}a_{32} - a_{22}a_{31})

크래머 공식은 detA0\det A \ne 0일 때에만 해를 구할 수 있다. detA0\det A \ne 0이면 해가 유일하고, 그렇지 않으면 해가 없거나 무수히 많다. (방정식의 개수가 많아지면 행렬식 계산에 시간이 오래 걸려 다른 방법이 더 효율적이지만, 이 문제에서는 크래머 공식을 사용한다.)

세 변수에 대한 일차 방정식 세 개가 주어질 때, 크래머 공식으로 해를 구하는 프로그램을 작성하시오.

입력

입력은 여러 개의 테스트 케이스로 이루어진다. 첫째 줄에 테스트 케이스의 개수 TT가 주어진다. 이어서 각 테스트 케이스가 다음 순서에 따라 세 줄에 걸쳐 주어진다.

a11a12a13b1a21a22a23b2a31a32a33b3\begin{matrix} a_{11} & a_{12} & a_{13} & b_1 \\ a_{21} & a_{22} & a_{23} & b_2 \\ a_{31} & a_{32} & a_{33} & b_3 \end{matrix}

모든 수는 1000-1000 이상 10001000 이하의 정수이며, 공백 한 칸으로 구분된다.

출력

각 테스트 케이스마다 두 줄을 출력한다.

첫째 줄에는 행렬 A1A_1, A2A_2, A3A_3, AA의 행렬식을 순서대로 출력한다.

둘째 줄에는 유일한 해가 존재하지 않으면 No unique solution을 출력하고, 유일한 해가 존재하면 Unique solution: 뒤에 x1x_1, x2x_2, x3x_3의 값을 소수점 셋째 자리까지 출력한다.

xix_i0.0005<xi<0.0005-0.0005 < x_i < 0.0005를 만족하면 -0.000 대신 0.000을 출력한다.

연속한 두 테스트 케이스 사이에는 빈 줄을 하나 출력한다.