레이저 빔 반사
시간 제한2초메모리 제한128 MB
거울이 최대 5개이고 최단 경로의 반사 횟수가 6회 미만일 때, 생성기에서 목표물까지 가는 최단 경로의 길이를 소수점 셋째 자리까지 구한다.
문제
평면 위에 레이저 빔 발생기, 목표물, 그리고 몇 개의 거울이 놓여 있습니다. 거울은 평면에 수직으로 서 있으며, 거울의 양면은 모두 평평하여 빔을 반사합니다. 빔은 서로 다른 반사 과정을 거쳐 목표물에 도달할 수 있으므로, 목표물을 맞히는 처음 방향이 여러 가지일 수 있습니다. 발생기에서 목표물까지 이르는 가장 짧은 빔 경로를 찾아 그 길이를 구하세요.
아래 그림은 가능한 빔 경로의 예시이며, 굵은 선이 가장 짧은 경로입니다.

가능한 경로의 예
입력
입력은 여러 개의 데이터셋으로 이루어집니다. 하나만 있는 줄이 입력의 끝을 나타냅니다.
각 데이터셋의 형식은 다음과 같습니다. 데이터셋에서 을 제외한 모든 값은 이상 이하의 정수입니다.
데이터셋의 첫 줄에는 거울의 개수를 나타내는 정수 ()이 주어집니다. 이어지는 개의 줄은 거울의 배치를 나타내며, 와 는 번째 거울의 두 끝점입니다. 어떤 두 거울도 서로 닿지 않습니다. 마지막 두 줄은 목표물의 위치 와 발생기의 위치 입니다. 목표물과 발생기는 서로 떨어져 있고, 둘 다 모든 거울과도 떨어져 있습니다.
목표물과 발생기의 크기는 무시할 수 있을 만큼 작으며, 거울의 두께도 무시합니다.
또한 각 데이터셋에 대해 다음을 가정할 수 있습니다.
- 발생기에서 목표물까지 이르는 경로가 적어도 하나 존재합니다.
- 가장 짧은 경로에서 일어나는 반사 횟수는 번 미만입니다.
- 가장 짧은 경로는 어떤 거울의 끝점으로부터 이내의 점에서 그 거울을 지나는 직선과 교차하거나 닿지 않습니다.
- 빔이 어떤 거울의 끝점으로부터 이내에서 그 거울의 직선에 도달했을 때 반사할지 통과할지를 임의로 선택할 수 있다고 하더라도, 그렇게 만들어지는 어떤 경로도 가장 짧은 경로보다 짧지 않습니다.
- 발생기에서 임의의 방향으로 쏜 빔이 거울에 반사되거나 거울로부터 이내로 지날 때, 빔과 거울이 이루는 각 는 6번째 반사점에 도달하기 전까지 을 만족합니다.
위의 첫 번째 그림은 첫 번째 예제 데이터셋에 해당합니다. 아래 그림은 나머지 예제 데이터셋에 대한 가장 짧은 경로를 보여 줍니다.

가장 짧은 경로의 예
출력
각 데이터셋에 대해, 발생기에서 목표물까지 이르는 가장 짧은 경로의 길이를 소수점 아래 정확히 세 자리로 반올림하여 한 줄에 출력하세요 (예: 90.510). 그 밖의 다른 문자는 출력하지 마세요.