삼각 퍼즐

시간 제한1초메모리 제한128 MB

문제

0과 1로 채워진 삼각형 모양의 행렬을 생각하자. 크기가 N이면 1번째 행과 1번째 열은 각각 N개의 칸, 2번째 행과 2번째 열은 각각 N-1개의 칸, ..., N번째 행과 N번째 열은 각각 1개의 칸으로 이루어진다. 즉 i번째 행에는 a_i,1, a_i,2, ..., a_i,N-i+1이 있고, j번째 열에는 a_1,j, a_2,j, ..., a_N-j+1,j가 있다.

0과 1로 이루어진 문자열에서 1이 연속해서 나타나는 최대 구간들의 길이를 순서대로 적으면 하나의 순서열을 만들 수 있다. 예를 들어 문자열 (0 1 1 0 1 1 1)의 순서열은 (2 3)이다. 1이 하나도 없으면 빈 순서열이다.

모든 행과 모든 열에 대해 위와 같은 순서열이 주어진다. 이 조건을 만족하는 삼각형 행렬을 하나 재구성하는 프로그램을 작성하라.

조건을 만족하는 행렬이 여러 개라면 그중 하나만 출력한다. 조건을 만족하는 행렬이 없으면 No Answer를 출력한다.

입력

첫째 줄에 행렬의 크기 N이 주어진다. (1 <= N <= 20)

이후 N개의 줄에는 1번째 행부터 N번째 행까지의 순서열 정보가 주어진다. 그다음 N개의 줄에는 1번째 열부터 N번째 열까지의 순서열 정보가 주어진다.

각 정보 줄은 다음 형식이다.

h x1 x2 ... xh

h는 해당 행 또는 열의 순서열에 들어 있는 원소의 개수이다. x1, x2, ..., xh는 연속된 1 구간의 길이를 앞에서부터 순서대로 나타낸다. h가 0이면 그 줄에는 h만 주어진다.

출력

조건을 만족하는 삼각형 행렬이 존재하면 행별로 출력한다. 1번째 행에는 N개의 값을, 2번째 행에는 N-1개의 값을, ..., N번째 행에는 1개의 값을 출력한다. 같은 행의 값은 공백으로 구분한다.

a1,1 a1,2 ... a1,n-1 a1,n
a2,1 a2,2 ... a2,n-2 a2,n-1
...
an-1,1 an-1,2
an,1

조건을 만족하는 행렬이 없으면 No Answer를 출력한다.