농부 존

아직 제출이 없습니다시간 제한1초메모리 제한128 MB

문제

농부 존은 들판에서 풀을 뜯는 소를 많이 기른다. 그중 소 베시(Bessie)는 매우 게을러서, 먹이가 있는 헛간까지 항상 가장 짧은 경로로만 걸어간다. 존은 베시가 운동을 더 하도록, 곧은 울타리 몇 개를 세워 베시가 최단 경로로 곧장 가지 못하고 울타리를 돌아가게 만들려고 한다.

베시의 출발 위치, 먹이가 있는 헛간의 위치, 그리고 모든 울타리의 위치(각 울타리는 하나의 선분으로 표현된다)가 주어진다. 베시가 걸어야 하는 최소 거리를 구하여라. 베시는 어떤 울타리도 가로질러 넘을 수 없지만, 울타리에 닿는 것은 허용된다.

입력

첫째 줄에 테스트 케이스의 개수를 나타내는 정수 하나가 주어진다. 각 테스트 케이스의 형식은 다음과 같다.

  • 네 정수 $B_x$, $B_y$, $F_x$, $F_y$가 주어지는 한 줄. $-10000 \le B_x, B_y, F_x, F_y \le 10000$이며, 각각 베시의 위치와 먹이의 위치를 뜻한다.
  • 울타리의 개수를 나타내는 정수 $N$이 주어지는 한 줄. $0 \le N \le 100$이다.
  • 이어서 울타리마다 한 줄씩, 총 $N$개의 줄이 주어진다. 각 줄에는 네 정수 $x_1$, $y_1$, $x_2$, $y_2$가 주어지며, $-10000 \le x_1, y_1, x_2, y_2 \le 10000$이고 $x_1 \ne x_2$ 또는 $y_1 \ne y_2$이다. 이는 그 울타리 양 끝점의 좌표이다.

같은 줄의 정수들은 하나의 공백으로 구분된다. 베시의 위치와 먹이의 위치는 어떤 울타리 위에도 있지 않으며, 서로 다른 두 울타리는 닿거나 겹치지 않는다.

출력

각 테스트 케이스마다 최소 이동 거리를 소수점 아래 여섯 자리까지 반올림하여 한 줄에 하나씩 출력한다.