아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

수퍼나인

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

요약
1부터 9까지의 참가자로 이루어진 주어진 세 명 경기 목록을 슈타이너 삼중계로 확장하고, 불가능하면 -1을 출력한다.
난이도

어려움10점 중 9점

유형
조합론, 백트래킹, 그리디, 구현
정답자
아직 제출이 없습니다

문제

스포츠 <<자기 게임>> 대회에서는 결승 진행 방식으로 <<수퍼나인>>이라는 것을 자주 사용한다. 이 방식에서는 9명의 참가자에 대해 세 사람씩 짝지은 대결 목록을 만들되, 각 참가자가 다른 모든 참가자와 정확히 한 번씩 같은 대결에 포함되도록 한다.

참가자에게는 1부터 9까지의 번호가 붙는다. 여러 대결(1부터 9까지의 수 세 개로 이루어진 삼중항)이 주어질 때, 주어진 대결을 모두 포함하는 수퍼나인 중 대결 수가 최소인 것을 만들거나, 그러한 수퍼나인이 존재하지 않음을 판별해야 한다.

입력

첫째 줄에는 정수 nn이 주어진다. 이는 주어진 대결의 수이다 (0≤n≤840 \le n \le 84).

다음 nn개 줄 각각에는 1부터 9까지의 서로 다른 정수 세 개가 주어진다. 이는 해당 대결에 참여하는 참가자의 번호이다. 임의의 두 대결에 대해, 한쪽 대결에는 참여하고 다른 쪽 대결에는 참여하지 않는 참가자가 존재함이 보장된다.

출력

해가 존재하지 않으면 −1-1을 출력한다. 그렇지 않으면 첫째 줄에 추가해야 하는 최소 대결 수 kk를 출력하고, 다음 kk개 줄 각각에 추가하는 대결에 참여하는 참가자의 번호 세 개를 출력한다. 해가 여러 개면 아무거나 출력한다.

예제3

  1. 예제 1

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

    입력
    12
    3 2 8
    3 9 4
    6 7 2
    6 8 9
    7 1 9
    8 1 5
    4 7 8
    1 6 3
    2 1 4
    6 4 5
    3 5 7
    5 9 2
    
    예상 출력
    0
    
  3. 예제 3

    입력
    0
    
    예상 출력
    12
    3 2 8
    3 9 4
    6 7 2
    6 8 9
    7 1 9
    8 1 5
    4 7 8
    1 6 3
    2 1 4
    6 4 5
    3 5 7
    5 9 2