블랙박스

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

문제

물리학자들이 "블랙박스" 안에 숨어 있는 원자의 위치를 알아내려고 합니다. 상자 경계의 출입구로 레이저 빔을 쏜 뒤, 각 빔이 어느 출입구로 빠져나오는지(또는 흡수되어 나오지 않는지)를 기록합니다. 이 실험 기록으로부터 원자의 위치를 복원하는 것이 목표입니다.

상자는 N×NN \times N 크기의 평면 격자이며 N=8N = 8입니다. 상자 안에는 정확히 K=5K = 5개의 원자가 숨어 있습니다. "테두리 금지" 규칙에 따라 원자는 가운데의 (N2)2=36(N-2)^2 = 36개 칸(안쪽 6×66 \times 6 영역)에만 놓일 수 있고, 두 원자가 같은 칸을 차지할 수는 없습니다.

경계에는 4N=324N = 32개의 출입구가 있으며 00번부터 3131번까지 번호가 매겨져 있습니다. 번호는 왼쪽 위 모서리에서 시작해 반시계 방향으로 붙습니다.

  • 0077번: 왼쪽 변, 위에서 아래로. 빔은 동쪽으로 들어갑니다.
  • 881515번: 아래쪽 변, 왼쪽에서 오른쪽으로. 빔은 북쪽으로 들어갑니다.
  • 16162323번: 오른쪽 변, 아래에서 위로. 빔은 서쪽으로 들어갑니다.
  • 24243131번: 위쪽 변, 오른쪽에서 왼쪽으로. 빔은 남쪽으로 들어갑니다.

빔은 직선으로 나아가며 다음 규칙을 따릅니다.

  • 앞에 아무 장애물이 없으면 직진합니다.
  • 원자가 있는 칸으로 들어가려 하면 그 빔은 흡수되어 상자 밖으로 나오지 않습니다.
  • 굴절: 어떤 칸에 들어가기 직전에, 그 칸의 (빔 진행 방향 기준) 왼쪽 이웃 칸에 원자가 있으면 빔은 오른쪽으로 꺾이고, 오른쪽 이웃 칸에 원자가 있으면 왼쪽으로 꺾입니다. 여기서 왼쪽·오른쪽은 빔이 현재 나아가는 방향을 기준으로 합니다.
  • 흡수는 굴절보다 우선합니다. 바로 앞 칸에 원자가 있으면, 이웃 원자에 의해 굴절될 상황이더라도 빔은 흡수됩니다.
  • 앞 칸 때문에 빔이 왼쪽과 오른쪽으로 동시에 꺾여야 한다면, 빔은 진행 방향을 반대로 돌려 되돌아갑니다.
  • 이 규칙들은 함께 적용되므로, 빔은 상자를 빠져나가거나 흡수되기 전까지 여러 번 꺾일 수 있습니다.

입력

첫 줄에는 실험의 개수를 나타내는 정수 ee (0<e320 < e \le 32)가 주어집니다. 이어지는 ee개의 줄에는 각각 두 정수 iioo가 주어집니다. ii는 빔이 상자로 들어간 출입구 번호이고, oo는 빔이 빠져나온 출입구 번호이거나, 빔이 흡수된 경우 1-1입니다.

출력

실험 결과로 원자의 위치가 유일하게 결정되면, 상자를 NN줄에 걸쳐 각 줄 NN개의 문자로 출력합니다. 원자가 있는 칸은 +, 빈 칸은 -로 나타냅니다. 그렇지 않으면 한 줄에 NO를 출력합니다. 실험이 모순되거나(모든 실험을 만족하는 원자 배치가 존재하지 않음) 결정적이지 않은(조건을 만족하는 서로 다른 배치가 여럿 존재함) 경우 모두 NO가 정답입니다.