유리판 자르기
시간 제한1초메모리 제한128 MB
큰 판을 빈틈없이 채우는 겹치지 않는 직사각형들이 주어질 때, 각 직사각형을 분리하는 모서리 간 절단선을 X1, Y1 순으로 가장 작은 것부터 출력한다.
문제
제프 아저씨는 창문과 액자에 쓰이는 유리판을 파는 유리 가게를 운영합니다. 알다시피 유리판은 한쪽 모서리에서 맞은편 모서리까지 직선으로 이어지는 자름선을 따라서만 자를 수 있습니다. 아래 그림은 하나의 유리판을 세 개의 더 작은 유리판으로 자르는 방법을 보여 줍니다.

제프 아저씨는 보통 다음과 같이 일합니다. 먼저 창문이나 액자에 쓸 작은 직사각형 유리판 주문을 여러 개 모읍니다. 그런 다음 큰 직사각형 유리판 하나 위에, 어떤 두 직사각형도 겹치지 않도록 각 작은 직사각형의 위치를 표시합니다. 마지막으로, 자를 조각의 한쪽 모서리에서 맞은편 모서리까지 곧게 이어지는 수평·수직 자름을 차례로 수행하여 모든 손님의 유리판을 만들어 냅니다.
이 마지막 단계(실제로 큰 유리판을 자르는 일)가 세상에서 가장 지루한 일이기 때문에, 제프 아저씨는 여러분에게 도움을 청합니다. 큰 직사각형 유리판과 표시된 각 직사각형의 왼쪽 아래·오른쪽 위 좌표가 주어졌을 때, 모서리에서 모서리까지의 자름을 어떤 순서로 수행하면 되는지 구하는 프로그램이 필요합니다. 이 자름 목록은 아저씨 대신 지루한 절단을 수행할 기계에 입력됩니다.
입력
입력은 여러 개의 테스트 케이스로 이루어집니다. 각 테스트 케이스의 첫 줄에는 창문과 액자의 개수를 나타내는 정수 이 주어집니다 (). 이어지는 개의 줄에는 각각 네 정수 , , , 가 주어지며, 과 는 표시된 직사각형의 왼쪽 아래·오른쪽 위 좌표입니다 (; 이고 ).
각 테스트 케이스에서 다음을 가정할 수 있습니다.
- 표시된 직사각형들은 서로 겹치지 않으며(경계에서 맞닿을 수는 있습니다) 큰 유리판을 남는 유리 없이 완전히 채웁니다. 따라서 큰 유리판의 왼쪽 아래·오른쪽 위 좌표는 직사각형들의 좌표로부터 알아낼 수 있습니다.
- 큰 유리판은 항상 모서리에서 모서리까지의 자름을 차례로 수행하여 표시된 직사각형들로 분리할 수 있습니다.
인 줄은 입력의 끝을 의미하며 처리하지 않습니다.
출력
각 테스트 케이스에 대해, 큰 유리판을 원하는 작은 유리판들로 분리하기 위해 수행해야 하는 자름의 순서 목록을 출력합니다. 각 자름은 한 줄에 네 정수 로 출력하며, 이는 자름의 두 끝점을 나타냅니다.
- 수평 자름은 이고 입니다.
- 수직 자름은 이고 입니다.
어떤 자름은 현재 조각의 한쪽 모서리에서 맞은편 모서리까지 곧게 이어지면서 어떤 표시된 직사각형의 내부도 가로지르지 않아 그 조각을 두 조각으로 나눌 때에만 수행할 수 있습니다. 동시에 여러 자름이 가능할 수 있습니다. 답을 유일하게 만들기 위해, 항상 가능한 자름 중 이 가장 작은 것을 수행하고, 같으면 이 가장 작은 것을 수행합니다. 한 번에 하나씩 자르고 매번 다시 판단하며, 모든 조각이 하나의 표시된 직사각형이 될 때까지 계속합니다.
서로 이웃한 테스트 케이스의 목록은 빈 줄로 구분합니다.