각의 볼록 껍질
시간 제한2초메모리 제한1024 MB
각 각도를 꼭짓점과 두 반직선 위의 점으로 주어질 때, 모든 각도 위 점들의 볼록 껍질 경계를 선분, 반직선, 직선으로 출력합니다.
문제
평면 위의 점 집합이 볼록하다는 것은, 그 집합에 속한 임의의 두 점을 잇는 선분도 집합에 포함된다는 뜻입니다. 집합 X의 볼록 껍질은 X를 포함하는 볼록 집합 가운데 포함 관계에서 가장 작은 집합입니다. 이 문제에서는 주어진 각들에 속한 점들의 볼록 껍질을 구합니다. 각은 같은 점에서 출발하는 두 반직선으로 이루어진 도형이며, 그 점을 각의 꼭짓점이라고 합니다. 왼쪽 그림에는 두 각이 있고, 오른쪽 그림에는 그 두 각의 볼록 껍질이 있습니다.

입력
첫 줄에 각의 개수 ()이 주어집니다. 이어지는 개의 줄에는 각마다 세 점이 주어집니다. 꼭짓점 하나와, 두 반직선 위에 각각 있는 꼭짓점이 아닌 점 하나씩입니다. 모든 좌표는 정수이며 절댓값은 을 넘지 않습니다. 각의 크기는 0도보다 크고 180도보다 작습니다.
출력
볼록 껍질의 경계를 반직선, 직선, 선분을 이어 붙인 목록으로 출력합니다. 출력에 있는 두 객체는 같은 직선 위에 놓일 수 없습니다. 모든 선분의 길이는 0보다 커야 합니다. 각 객체의 시작점은 바로 앞 객체의 끝점과 같아야 합니다. 출력한 순서대로 경계를 따라 이동할 때 각들의 볼록 껍질이 오른쪽에 있어야 합니다. 출력하는 모든 수는 절댓값이 이하인 정수입니다.
첫 줄에 객체의 개수 을 출력합니다. 이어지는 개의 줄에는 다음 형식으로 객체를 설명합니다. segment x1 y1 x2 y2는 에서 로 향하는 선분입니다. outray x1 y1 x2 y2는 에서 시작해 를 지나는 반직선입니다. inray x1 y1 x2 y2는 에서 시작해 을 지나는 반직선입니다. line x1 y1 x2 y2는 두 점을 지나는 직선으로, 직선의 방향으로 나아갈 때 이 보다 먼저 옵니다.
볼록 껍질이 평면 전체이면 을 출력합니다.