매년 7월, ACM 대학교에서는 체육대회를 엽니다. 그중에서도 '큰 공 굴리기'가 가장 인기 있는 종목입니다. 이 경기에서 선수들은 땅에 그려진 곧은 직선 코스를 따라 공을 굴립니다. 땅에는 장애물로 직육면체 블록들이 고정되어 놓여 있습니다. 경기 도중 공은 어떤 블록과도 부딪혀서는 안 되며, 공이 땅에 닿는 가장 아래 점은 코스를 벗어나서는 안 됩니다.
경기를 더 재미있게 하기 위해 대학교는 가능한 한 가장 큰 공을 쓰려고 합니다. 어떤 장애물 블록과도 부딪히지 않고 도착점까지 굴러갈 수 있는 공의 가장 큰 반지름을 구하는 프로그램을 작성하세요.
공은 완전한 구이고 땅은 평면입니다. 각 블록은 직육면체이며, 바닥 직사각형의 네 변은 땅 위에 놓여 있고 x축 또는 y축에 평행합니다. 코스는 시작점에서 끝점까지의 선분으로 주어집니다. 공은 가장 아래 점이 시작점에 닿은 채로 출발하여, 가장 아래 점이 끝점에 닿으면 도착합니다.
입력은 여러 개의 데이터셋으로 이루어집니다. 각 데이터셋의 형식은 다음과 같습니다.
N
sx sy ex ey
minx1 miny1 maxx1 maxy1 h1
minx2 miny2 maxx2 maxy2 h2
...
minxN minyN maxxN maxyN hN
각 데이터셋의 첫 줄에는 블록의 개수 $N$ ($1 \le N \le 50$)이 주어집니다. 다음 줄에는 공백으로 구분된 네 정수가 주어지며, 각각 시작점 $(sx, sy)$와 끝점 $(ex, ey)$를 나타냅니다. 이어지는 $N$개의 줄에는 각 블록의 배치가 주어집니다. 각 줄은 공백으로 구분된 다섯 정수로 이루어지며, 바닥면의 두 꼭짓점 $(minx, miny)$, $(maxx, maxy)$와 블록의 높이 $h$를 나타냅니다. 모든 정수는 다음 조건을 만족합니다.
마지막 데이터셋 다음에는 $0$ 하나만 있는 줄이 옵니다.
각 데이터셋마다 공의 가장 큰 반지름을 소수점 아래 정확히 6자리까지 반올림하여 한 줄에 출력하세요. 코스 선분 위에 블록이 하나라도 놓여 있으면 가장 큰 반지름은 0으로 정의합니다. 각 데이터셋에서 가장 큰 반지름은 1000을 넘지 않는다고 가정해도 됩니다.