만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

지도 제작

시간 제한3초메모리 제한512 MB

요약
격자 크기를 모르는 도시에서 각 집의 이웃 명단이 틀릴 수 있을 때, 모든 명단과 일치하는 격자 지도를 찾고 불가능하면 -1을 출력합니다.
난이도

보통10점 중 6점

유형
그래프, 구현, 완전 탐색
정답자
아직 제출이 없습니다

문제

지도 제작은 지도를 만드는 일이다. Abbey는 어떤 도시에 있는 모든 집의 위치를 지도로 그리려는 지도 제작자다. 그러나 그녀는 그 도시를 한 번도 가 본 적이 없다.

이 도시는 직사각형 격자이며, 교차점마다 집이 하나씩 있다. 격자의 가로와 세로 크기는 모르지만, 각 차원이 2 이상이라는 것은 알고 있다.

이웃은 북, 동, 남, 서 중 한 방향으로 교차점을 정확히 한 칸 떨어진 집이다. 각 집의 이웃은 정확히 2, 3, 4명이다. 모서리에 있는 집은 2명, 가장자리에 있는 집은 3명, 그 밖의 집은 4명이다.

작년에 도시의 각 가구는 자신의 이웃이 누구인지 적었다. 이 국세 조사 결과에는 틀린 내용이 있을 수 있다. 어떤 가구는 이웃이 아닌 사람을 적었고, 어떤 가구는 이웃을 빠뜨렸다. 또 어떤 가구는 이웃을 더 많이 적었고, 심지어 자기 자신을 이웃으로 적은 가구도 있다.

가능하다면 Abbey가 모든 조사 결과와 일치하는 도시 지도를 그리도록 도와라. 모든 가구가 자신의 이웃을 정확히 적었다면 지도는 조사 결과와 일치한다.

입력

첫 줄에 정수 nn (4≤n≤2004 \le n \le 200)이 주어진다. 이는 도시에 있는 집의 수다.

다음 nn개의 줄은 1번 집부터 nn번 집까지 순서대로 조사 결과를 나타낸다. 각 줄은 정수 kk (2≤k≤42 \le k \le 4)로 시작하는데, 이는 그 집의 이웃 수다. 이어서 1 이상 nn 이하의 서로 다른 정수 kk개가 주어지며, 이들은 이웃 집의 번호다.

출력

입력과 일치하는 유효한 지도가 없으면 -1을 출력한다.

그렇지 않으면 첫 줄에 지도의 크기 rr과 cc를 출력하고, 이어서 r×cr \times c 격자에 정수를 채워 출력한다. 1부터 nn까지의 수는 각각 정확히 한 번씩 나타나야 하며, 지도는 입력과 일치해야 한다. 올바른 답이 여러 개라면 그중 어느 것을 출력해도 된다.

예제4

  1. 예제 1

    입력
    4
    2 2 3
    2 1 4
    2 1 4
    2 2 3
    
    예상 출력
    2 2
    1 3
    2 4
    
  2. 예제 2

    입력
    4
    2 1 2
    2 1 2
    2 1 2
    2 1 2
    
    예상 출력
    -1
    
  3. 예제 3

    입력
    6
    2 2 3
    2 1 4
    3 1 4 5
    3 2 3 6
    2 3 6
    2 4 5
    
    예상 출력
    3 2
    1 2
    3 4
    5 6
    
  4. 예제 4

    입력
    7
    2 4 3
    3 1 3 6
    4 2 3 7 1
    3 1 2 6
    2 2 3
    2 5 4
    2 3 6
    
    예상 출력
    -1