맥스플러스

3x3 정수 행렬 A와 C가 주어질 때, 맥스플러스 곱 A⊗B=C를 만족하는 정수 행렬 B 중 모든 성분이 가장 큰 행렬을 구하거나 존재하지 않으면 nemoguce를 출력한다.

어려움8수학행렬그리디구현아직 제출이 없습니다시간 제한1초메모리 제한128 MB

문제

맥스플러스 대수는 실수 위에서 이항 연산 두 개만 쓰는 대수 체계다. 하나는 최댓값 연산 \oplus이고 다른 하나는 덧셈 연산 \otimes이며, \otimes\oplus보다 우선순위가 높다.

xy=max(x,y),xy=x+yx \oplus y = \max(x, y), \qquad x \otimes y = x + y

예를 들어 35=53 \oplus 5 = 5, 74=77 \oplus 4 = 7, 35=83 \otimes 5 = 8, 74=117 \otimes 4 = 11이다.

이 대수를 응용할 때는 두 행렬의 맥스플러스 곱 AB=CA \otimes B = C를 많이 쓴다. 곱은 보통의 행렬 곱과 같은 꼴로 정의하되, 곱셈 기호를 \otimes(덧셈)로 바꾸고 덧셈 기호를 \oplus(최댓값)로 바꾼다.

이 문제에서는 정수로 이루어진 3×33 \times 3 행렬의 맥스플러스 곱만 다룬다.

[a1,1a1,2a1,3a2,1a2,2a2,3a3,1a3,2a3,3][b1,1b1,2b1,3b2,1b2,2b2,3b3,1b3,2b3,3]=[c1,1c1,2c1,3c2,1c2,2c2,3c3,1c3,2c3,3]\begin{bmatrix} a_{1,1} & a_{1,2} & a_{1,3} \\ a_{2,1} & a_{2,2} & a_{2,3} \\ a_{3,1} & a_{3,2} & a_{3,3} \end{bmatrix} \otimes \begin{bmatrix} b_{1,1} & b_{1,2} & b_{1,3} \\ b_{2,1} & b_{2,2} & b_{2,3} \\ b_{3,1} & b_{3,2} & b_{3,3} \end{bmatrix} = \begin{bmatrix} c_{1,1} & c_{1,2} & c_{1,3} \\ c_{2,1} & c_{2,2} & c_{2,3} \\ c_{3,1} & c_{3,2} & c_{3,3} \end{bmatrix}

여기서 ci,j=ai,1b1,jai,2b2,jai,3b3,jc_{i,j} = a_{i,1} \otimes b_{1,j} \oplus a_{i,2} \otimes b_{2,j} \oplus a_{i,3} \otimes b_{3,j}이다. 즉 ci,jc_{i,j}는 대응하는 성분들의 합 세 개 중 가장 큰 값이다.

예를 들어 다음이 성립한다.

[012310111][201132010]=[243534343]\begin{bmatrix} 0 & 1 & 2 \\ 3 & -1 & 0 \\ 1 & 1 & 1 \end{bmatrix} \otimes \begin{bmatrix} 2 & 0 & 1 \\ -1 & 3 & 2 \\ 0 & 1 & 0 \end{bmatrix} = \begin{bmatrix} 2 & 4 & 3 \\ 5 & 3 & 4 \\ 3 & 4 & 3 \end{bmatrix}

행렬 AACC가 주어진다. 두 행렬의 성분은 모두 절댓값이 100보다 작은 정수다. AB=CA \otimes B = C를 만족하고 성분이 모두 절댓값이 1000보다 작은 정수인 행렬 BB를 찾는 프로그램을 작성하시오. 그런 행렬이 없으면 없다는 사실을 출력한다.

입력

첫 세 줄에 행렬 AA의 성분이 한 줄에 세 개씩 주어진다.

다음 세 줄에 행렬 CC의 성분이 한 줄에 세 개씩 주어진다.

모든 수는 절댓값이 100보다 작은 정수다.

출력

AB=CA \otimes B = C를 만족하는 행렬 BB가 없으면 첫 줄에 nemoguce만 출력한다.

있으면 세 줄에 걸쳐 행렬 BB의 성분을 한 줄에 세 개씩 공백 하나로 구분해 출력한다.

조건을 만족하는 BB는 여러 개일 수 있다. 그중에서 모든 자리의 성분이 다른 어떤 답의 같은 자리 성분보다 크거나 같은 행렬을 출력한다. 답이 하나라도 있으면 그런 행렬은 항상 존재하고 유일하다. 그 행렬의 성분은 모두 절댓값이 1000보다 작다.