끈 팽팽하게 당기기

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

문제

평평한 판의 앞면에 구멍 두 개가 뚫려 있고 핀 여러 개가 박혀 있습니다. 판 뒤쪽에서 나온 실이 한 구멍을 통해 앞면으로 올라와 꺾은선(다각형 사슬) 모양으로 놓인 뒤, 다른 구멍을 통해 다시 판 뒤쪽으로 내려갑니다. 처음에 실은 어떤 핀에도 닿아 있지 않습니다.

실의 양 끝에 무게가 같은 돌을 하나씩 매답니다. 돌이 실을 서서히 잡아당겨 느슨한 부분이 없어질 때까지 팽팽하게 만듭니다. 이때 실은 일부 핀에 걸려 새로운 꺾은선 모양으로 자리 잡습니다(어떤 핀에도 걸리지 않는 경우도 있습니다). 실은 팽팽해지는 동안 스스로 얽히지 않으므로, 최종 모양은 내부 꼭짓점이 핀의 위치이고 양 끝점이 두 구멍인 꺾은선이 됩니다.

실과 핀과 구멍은 충분히 가늘어서 그 두께는 무시할 수 있습니다. 판 앞면에 놓인, 팽팽해진 실의 길이를 구하는 프로그램을 작성하세요.

입력

입력은 여러 개의 데이터셋으로 이루어지며, 공백으로 구분된 두 개의 0이 적힌 줄로 끝납니다.

각 데이터셋의 형식은 다음과 같으며, 여기서 $l = m + n$ 입니다.

m n
x1 y1
...
xl yl

첫 줄에는 정수 $m$ 과 $n$ 이 주어집니다 ($2 \le m \le 100$, $0 \le n \le 100$). $m$ 은 처음 실 모양을 나타내는 꼭짓점의 개수(두 구멍 포함)이고, $n$ 은 핀의 개수입니다. 이어지는 $l = m + n$ 개의 줄에는 각각 정수 $x_i$ 와 $y_i$ 가 주어지며($0 \le x_i \le 1000$, $0 \le y_i \le 1000$), 이는 점 $P_i = (x_i, y_i)$ 의 좌표입니다.

  • $P_1, \dots, P_m$ 은 처음 실을 나타냅니다. 두 구멍은 $P_1$ 과 $P_m$ 이고, 실은 이 순서대로 이어진 꺾은선 $P_1 \to P_2 \to \dots \to P_m$ 입니다.
  • $P_{m+1}, \dots, P_{m+n}$ 은 핀의 위치입니다.

같은 위치에 놓인 두 점은 없으며, 한 직선 위에 놓인 세 점도 없습니다.

출력

각 데이터셋마다, 판 앞면에 남은 팽팽해진 실의 길이를 소수점 아래 정확히 세 자리로 반올림하여 한 줄에 출력하세요. 그 밖의 문자는 출력하지 마세요.