물풍선 아티스트 마리드는 무한한 2차원 격자판에 물풍선 개를 원하는 위치와 세기로 놓을 것이다. 번째 물풍선의 위치는 이며, 세기는 이다. 이때, 물풍선의 세기 는 0보다 큰 정수다.
물풍선은 놓은 즉시 터지며 터진 물풍선의 세기만큼 가로세로 방향으로 물줄기를 발사한다. 번째 물풍선이 터지면, 가로 방향으로는 , , ..., , 에 해당하는 부분에 물줄기가 닿게 되며, 세로 방향으로는 , , ..., , 에 해당하는 부분에 물줄기가 닿게 된다. 에도 물줄기가 닿게 된다.
물줄기가 한 번 이상 닿은 위치의 바닥은 젖어서 색이 어두워지는데, 이 성질을 이용해 마리드는 바닥에 그림을 그리려 한다. 목표 그림은 개의 위치 , , , 으로 이루어져 있으며, 물줄기가 한 번 이상 닿은 위치가 목표 그림과 정확히 일치해야 한다.
목표 그림이 주어지면, 물풍선을 놓아서 해당 그림을 정확히 그리는 것이 가능한지, 가능하다면 그 방법을 출력하는 프로그램을 작성하시오.
첫 줄에 목표 그림을 이루는 위치의 개수를 나타내는 정수 이 주어진다.
다음 개의 줄에 걸쳐 각각에 목표 그림의 위치를 나타내는 정수 가 공백을 사이에 두고 주어진다.
주어지는 모든 위치는 서로 다르다.
첫 줄에 놓을 물풍선의 개수 를 출력하고, 다음 개의 줄에 걸쳐 번째 물풍선의 위치와 세기를 나타내는 세 정수 , , 를 공백을 사이에 두고 출력한다. 만약, 가능한 답이 여러 가지인 경우 그중 아무거나 하나 출력한다. 를 최소화할 필요는 없다.
단, 위 조건을 만족하면서 목표 그림을 정확히 그리는 것이 불가능하다면 첫 줄에 -1
을 출력한다.
12 1 3 2 3 3 1 3 2 3 3 3 4 3 5 4 1 4 2 4 3 5 2 5 3
2 3 3 2 4 2 1
4 1 1 2 1 2 2 3 2
-1
예제 1의 경우 주어진 출력 예제 외에도 가능한 올바른 출력들이 더 존재할 수 있으며, 그중 어느 것을 출력해도 된다.
입력 케이스들은 다음과 같은 종류로 구별되며, 한 종류의 케이스를 다 맞추어야 그 종류에 배정된 점수를 받을 수 있다.
종류 1: 17점
종류 2: 25점
목표 그림을 정확히 그리는 것이 항상 가능함이 보장된다.
종류 3: 58점
추가적인 제한 조건이 없음.