평면 위에 레이저 빔 발생기, 목표물, 그리고 몇 개의 거울이 놓여 있습니다. 거울은 평면에 수직으로 서 있으며, 거울의 양면은 모두 평평하여 빔을 반사합니다. 빔은 서로 다른 반사 과정을 거쳐 목표물에 도달할 수 있으므로, 목표물을 맞히는 처음 방향이 여러 가지일 수 있습니다. 발생기에서 목표물까지 이르는 가장 짧은 빔 경로를 찾아 그 길이를 구하세요.
아래 그림은 가능한 빔 경로의 예시이며, 굵은 선이 가장 짧은 경로입니다.

가능한 경로의 예
입력은 여러 개의 데이터셋으로 이루어집니다. $0$ 하나만 있는 줄이 입력의 끝을 나타냅니다.
각 데이터셋의 형식은 다음과 같습니다. 데이터셋에서 $n$을 제외한 모든 값은 $0$ 이상 $100$ 이하의 정수입니다.
$n$ $PX_1\ PY_1\ QX_1\ QY_1$ $\vdots$ $PX_n\ PY_n\ QX_n\ QY_n$ $TX\ TY$ $LX\ LY$
데이터셋의 첫 줄에는 거울의 개수를 나타내는 정수 $n$ ($1 \le n \le 5$)이 주어집니다. 이어지는 $n$개의 줄은 거울의 배치를 나타내며, $(PX_i, PY_i)$와 $(QX_i, QY_i)$는 $i$번째 거울의 두 끝점입니다. 어떤 두 거울도 서로 닿지 않습니다. 마지막 두 줄은 목표물의 위치 $(TX, TY)$와 발생기의 위치 $(LX, LY)$입니다. 목표물과 발생기는 서로 떨어져 있고, 둘 다 모든 거울과도 떨어져 있습니다.
목표물과 발생기의 크기는 무시할 수 있을 만큼 작으며, 거울의 두께도 무시합니다.
또한 각 데이터셋에 대해 다음을 가정할 수 있습니다.
위의 첫 번째 그림은 첫 번째 예제 데이터셋에 해당합니다. 아래 그림은 나머지 예제 데이터셋에 대한 가장 짧은 경로를 보여 줍니다.

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