n×n 격자의 각 칸에 탑을 하나씩 세운다. 탑의 높이는 1 이상 n 이하의 정수이고, 같은 높이의 탑이 한 행이나 한 열에 두 번 나타나면 안 된다. 그래서 각 행과 각 열에는 1부터 n까지의 높이가 정확히 한 번씩 나온다.
퍼즐에는 두 종류의 조건이 붙는다.
첫째, 격자 안의 몇몇 칸은 세울 탑의 높이가 미리 정해져 있다.
둘째, 격자 둘레의 몇몇 자리에는 숫자가 적혀 있다. 그 숫자는 그 자리에서 해당 행이나 열을 들여다볼 때 보이는 탑의 개수다. 높은 탑은 뒤에 있는 낮은 탑을 완전히 가리므로, 어떤 탑은 보는 사람과 자기 사이에 있는 모든 탑보다 높을 때만 보인다.
모든 조건을 만족하는 배치를 구하여라.
첫 줄에 퍼즐의 개수 T가 주어진다. (1≤T≤100)
각 퍼즐은 격자의 크기 n이 적힌 줄로 시작하고 (3≤n≤5), 이어서 길이가 n+2인 줄이 n+2개 온다.
그중 첫 줄은 위쪽 둘레, 마지막 줄은 아래쪽 둘레다. 가운데 n개 줄의 첫 글자는 왼쪽 둘레, 마지막 글자는 오른쪽 둘레다. 둘레에 적힌 숫자는 그 방향에서 보이는 탑의 개수이고, '-'는 그 방향에 조건이 없다는 뜻이다. 네 모서리는 항상 '-'다.
가운데 n개 줄의 안쪽 n글자는 격자의 칸이다. 숫자는 그 칸에 세울 탑의 높이이고, '-'는 높이가 정해져 있지 않다는 뜻이다.
퍼즐에 나오는 모든 글자는 '-'이거나 1 이상 n 이하의 숫자다.
퍼즐마다 답을 길이 n인 줄 n개로 출력하고, 그 뒤에 빈 줄 하나를 출력한다.
답이 여러 개면 사전순으로 가장 앞서는 것을 출력한다. 두 답은 격자를 위에서 아래로, 각 행은 왼쪽에서 오른쪽으로 읽어 이어 붙인 n2자리 문자열로 비교한다.
풀 수 없는 퍼즐이면 no 한 단어만 출력하고, 그 뒤에 빈 줄 하나를 출력한다.