성소 점검

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

문제

어떤 교단은 반지름이 1000인 원을 따라 성소를 세운다. 원의 둘레를 길이가 같은 호 NN개로 나누고, 나눈 점에 1번부터 NN번까지 차례로 번호를 붙인다. NN이 12이면 시계 문자판의 눈금처럼 점 12개가 놓인다.

원마다 신성수가 하나 이상 정해져 있다. 신성수는 모두 NN의 약수이면서 NN보다 작다. 번호가 신성수 가운데 하나 이상의 배수인 점에는 성소가 하나씩 서 있다. NN이 12이고 신성수가 2와 3이면 성소는 2, 3, 4, 6, 8, 9, 10, 12번 점에 있다.

점검하는 날에는 부지 전체를 닫고, 원의 중심에 있는 창고에서 작업자 WW명이 동시에 출발한다. 작업자는 자기가 맡은 성소를 모두 돌아본 뒤 창고로 돌아온다. 이동은 직선으로만 하고 거리는 유클리드 거리로 잰다. 작업자마다 자기가 맡은 성소를 모두 방문하는 가장 짧은 경로를 택한다. 성소는 모두 적어도 한 명이 맡는다.

마지막 작업자가 창고로 돌아와야 부지를 다시 연다. 그래서 가장 멀리 걷는 작업자의 이동 거리가 가장 작아지도록 성소를 나눠야 한다. 그 최솟값을 구하라. NN이 12, 신성수가 2와 3, 작업자가 3명이면 답은 약 3517.6이다.

입력

입력은 데이터 세트 하나 이상으로 이루어진다. 각 데이터 세트는 한 줄에 양의 정수만 담는다. 처음 세 수는 작업자 수 WW, 원을 나눈 호의 개수 NN, 신성수의 개수 DD이고, 그 뒤에 신성수 DD개가 온다.

WW는 성소의 총 개수 이하이고, N8600N \le 8600, D6D \le 6이다. 신성수는 모두 NN의 약수이면서 NN보다 작다.

마지막 줄에는 0 하나만 있고, 입력이 끝났다는 뜻이다.

출력

데이터 세트마다 한 줄씩, 성소를 가장 좋게 나눴을 때 한 작업자가 걸어야 하는 최대 거리를 출력한다. 소수점 아래 첫째 자리까지 반올림해서 적고, 그 자리가 0이어도 반드시 적는다.

정확한 최솟값과 0.005 이내로 차이 나는 값은 모두 같은 값으로 반올림되도록 데이터를 골랐다.

한 입력에 데이터 세트가 여러 개 들어오므로 알고리즘이 충분히 빨라야 한다.