로봇 청소기

시간 제한5초메모리 제한128 MB

문제

로봇 청소기는 청소를 시작하기 전에 방의 구조를 인식해야 한다. 로봇에 달린 센서는 로봇이 직접 부딪친 벽만 인식할 수 있다. 따라서 방의 모든 벽을 인식하려면 로봇은 방의 모든 벽에 한 번씩 부딪쳐야 한다.

방은 볼록 다각형 모양이다. 벽이 $N$개인 방과 로봇의 시작 위치 $P$가 주어질 때, 로봇이 모든 벽에 부딪친 뒤 다시 시작 위치 $P$로 돌아오는 가장 짧은 경로의 길이를 구하여라. 로봇이 다각형의 꼭짓점에 부딪치면, 그 꼭짓점에서 만나는 두 벽 모두에 부딪친 것으로 본다.

입력

입력은 여러 개의 테스트 케이스로 이루어진다.

각 테스트 케이스의 첫째 줄에는 다각형의 꼭짓점 개수 $N$ ($3 \le N \le 100$)과 로봇의 시작 위치 좌표 $P_x$, $P_y$ ($-10,000 \le P_x, P_y \le 10,000$)가 주어진다. 다음 $N$개의 줄에는 벽(다각형)의 꼭짓점 좌표 $x$, $y$ ($-10,000 \le x, y \le 10,000$)가 주어진다.

꼭짓점은 반시계 방향으로 주어지고, 모든 내부각은 $180^\circ$보다 작다. 다각형의 변은 서로 교차하지 않으며, 로봇의 시작 위치는 다각형 내부에 있다(변 위에 있는 경우는 없다).

출력

각 테스트 케이스마다 Case x: L 형식으로 한 줄에 출력한다. 여기서 $x$는 $1$부터 시작하는 테스트 케이스 번호이고, $L$은 최단 경로의 길이를 소수점 셋째 자리에서 반올림하여 소수점 둘째 자리까지 나타낸 값이다.