비행 계획

구 위의 두 위도/경도 점에 대해 대권 거리와, 위도를 유지한 뒤 경도를 유지하며 가는 두 구간 경로의 거리를 각각 계산한다.

보통5기하수학구현시뮬레이션면접 대비아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

당신은 소형 항공사 SLPC 항공에서 일한다. 이 회사는 최근 비행 계획 프로그램에서 심각한 버그를 발견했다. 버그 때문에 비행기는 위도나 경도 중 하나를 일정하게 유지하는 경로로만 날아간다. 예를 들어 비행기를 (0,0)(0, 0)에서 (10,10)(10, 10)으로 보낼 때, 프로그램은 먼저 위도를 일정하게 유지하며 (0,0)(0, 0)에서 (0,10)(0, 10)으로 보내고, 이어서 경도를 일정하게 유지하며 (0,10)(0, 10)에서 (10,10)(10, 10)으로 보낸다.

이 버그로 회사가 얼마나 손해를 보았는지 알고 싶다. 그 첫 단계로 여러 도시의 위도와 경도 좌표를 가지고, 두 도시 사이의 가능한 가장 짧은 비행 거리와 버그가 있는 프로그램이 정한 비행 거리를 구하려 한다.

지구는 반지름이 63716\,371 km인 완전한 구이고, SLPC 항공의 비행기는 지표면 바로 위(무시할 수 있는 높이)를 난다고 가정한다.

버그가 있는 프로그램은 항상 출발점의 위도를 유지하는 경로로 먼저 날아가 도착점의 경도에 이른 뒤, 그 경도를 유지하는 경로로 도착점까지 날아간다. 위도를 유지하는 구간은 위도선을 따라 두 경도 사이의 더 짧은 쪽으로 돈다. 두 경도의 차이가 정확히 180180도이면 어느 쪽으로 돌아도 길이가 같다.

위도와 경도

지표면 위 한 점의 위도는 적도면과, 지구 중심과 그 점을 잇는 직선이 이루는 각이다. 위도의 범위는 9090^\circS(남극)부터 9090^\circN(북극)까지이다.

지표면 위 한 점의 경도는 본초 자오선을 포함하는 평면과, 북극, 그 점, 남극을 포함하는 평면이 이루는 각이다. 자오선은 북극에서 남극까지 이어지는 대원의 절반이고, 본초 자오선은 경도를 00으로 정한 자오선이다. 경도의 범위는 180180^\circW부터 180180^\circE까지이다.

입력

첫째 줄에 테스트 케이스의 수 TT가 주어진다. (1T100001 \le T \le 10\,000)

각 테스트 케이스는 한 줄로 이루어지며, 네 실수 a1,b1,a2,b2a_1, b_1, a_2, b_2가 주어진다. (a1,a290|a_1|, |a_2| \le 90, b1,b2180|b_1|, |b_2| \le 180) 이 수들은 도 단위의 위도, 경도 좌표 쌍 (a1,b1)(a_1, b_1)(a2,b2)(a_2, b_2)를 나타낸다. (a1,b1)(a_1, b_1)이 출발점, (a2,b2)(a_2, b_2)가 도착점이다. 위도가 양수이면 적도의 북쪽, 음수이면 남쪽에 있는 점이다. 경도가 양수이면 본초 자오선의 동쪽, 음수이면 서쪽에 있는 점이다.

출력

각 테스트 케이스마다 한 줄에 두 지점 사이의 가장 짧은 비행 거리와 버그가 있는 프로그램이 정한 비행 거리를 공백으로 구분해 출력한다. 거리의 단위는 km이고, 두 값 모두 소수점 아래 여덟째 자리까지 반올림해 정확히 소수점 아래 88자리로 출력한다. 거리가 00이면 0.00000000을 출력한다.

힌트

첫 번째 테스트 케이스에서는 버그가 있는 프로그램이 우연히 가장 좋은 경로를 고른다. 두 거리 모두 정확히 대원의 절반이다.

두 번째 테스트 케이스에서는 버그가 있는 프로그램이 가장 좋은 경로를 고르지 않으므로 두 값이 다르다.