코메디아 델라르테

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

요약
3차원 M^3 슬라이딩 퍼즐이 목표 배열로 복원 가능한지 순열의 짝홀성을 이용해 판별합니다.
난이도

보통10점 중 6점

유형
수학, 조합론, 구현
정답자
아직 제출이 없습니다

문제

코메디아 델라르테(Commedia dell'arte)는 16세기 초 이탈리아에서 처음 등장한 연극 장르로, 로마 연극에서 영감을 받았다. 이 연극에는 정해진 대본이 없어서 배우(연기자라고도 한다)들은 끊임없이 즉흥 연기를 해야 했다. 작가는 "무대에 올라 뭔가 우스운 것을 하라" 또는 "모두 무대에 올라 모든 일이 즐겁게 마무리된다" 같은 대략적인 지시만 주었다.

한 극단이 완전히 새로운 연극을 무대에 올리려 한다. 주인공은 극에서 중요한 역할을 하며 즉흥 연기의 여지를 크게 넓혀 주는 퍼즐 하나를 가지고 있다. 이 퍼즐은 세계적으로 유명한 15 퍼즐인데, 극을 더 흥미롭게 만들기 위해 극단은 표준 퍼즐을 3차원 퍼즐로 바꾸기로 했다.

3차원 퍼즐은 M3M^3개의 칸으로 이루어진 정육면체다. 한 칸을 제외한 모든 칸에는 정육면체 타일이 하나씩 들어 있고, 정확히 한 자리가 비어 있다. 타일에는 11부터 M3−1M^3 - 1까지 번호가 매겨져 있다. 목표는 타일을 무작위로 뒤섞은 뒤 원래 순서로 되돌리는 것이다. 허용되는 유일한 이동은, 빈 칸과 인접한 타일을 세 주축 방향 중 하나를 따라 빈 칸으로 밀어 넣는 것이다.

원래(목표) 배치에서 좌표 (x,y,z)(x, y, z) (x,y,z∈{0,…,M−1}x, y, z \in \{0, \dots, M-1\})의 칸에는 번호 z⋅M2+y⋅M+x+1z \cdot M^2 + y \cdot M + x + 1인 타일이 들어 있고, 칸 (M−1,M−1,M−1)(M-1, M-1, M-1)이 비어 있다.

퍼즐을 풀 수 있는지 판정하는 프로그램을 작성하라.

입력

입력은 NN개의 테스트 케이스로 이루어진다. 첫 줄에는 양의 정수 NN이 하나 주어지고, 이어서 각 케이스가 주어진다.

각 케이스의 첫 줄에는 정육면체의 한 변의 길이를 나타내는 정수 MM (1≤M≤1001 \le M \le 100)이 주어진다. 이어지는 MM개의 줄에는 각각 한 층(layer)을 나타내는 M2M^2개의 수가 주어진다. 첫 줄은 정육면체의 맨 위 층, 마지막 줄은 맨 아래 층이다. 한 층 안에서 수는 왼쪽 위 구석에서 오른쪽 아래 구석까지 행 단위로 나열된다. 즉, 좌표 (x,y,z)(x, y, z)의 칸은 (z+1)(z + 1)번째 줄의 (x+M⋅y+1)(x + M \cdot y + 1)번째 수로 표현된다. 수는 공백으로 구분되며, 00은 빈 자리를 뜻한다.

출력

각 케이스마다 정확히 한 줄을 출력한다. 타일을 밀어서 원래 배치에 도달할 수 있으면 Puzzle can be solved.를, 그렇지 않으면 Puzzle is unsolvable.를 출력한다.

예제4

  1. 예제 1

    입력
    2
    2
    1 2 3 4
    5 7 6 0
    2
    2 1 3 5
    4 6 0 7
    
    예상 출력
    Puzzle is unsolvable.
    Puzzle can be solved.
    
  2. 예제 2

    입력
    1
    1
    0
    
    예상 출력
    Puzzle can be solved.
    
  3. 예제 3

    입력
    1
    2
    1 2 3 4
    5 6 7 0
    
    예상 출력
    Puzzle can be solved.
    
  4. 예제 4

    입력
    1
    3
    1 2 3 4 5 6 7 8 9
    10 11 12 13 14 15 16 17 18
    19 20 21 22 23 24 25 26 0
    
    예상 출력
    Puzzle can be solved.