소수마을

2차원 평면의 점들이 주어질 때, 각 이동의 잘라낸 유클리드 거리가 소수여야 한다는 조건 아래 시작점에서 목표점까지 가는 최단 경로를 구한다.

보통6그래프최단 경로정수론완전 탐색면접 대비아직 제출이 없습니다시간 제한2초메모리 제한256 MB

문제

소수 마을 주민은 아주 특이한 규칙을 지킨다. 가려는 곳까지의 거리가 소수일 때만 그곳으로 간다는 규칙이다.

소수 마을 주민 승욱이는 멀리 떨어진 A마을에 볼일이 있어 그곳까지 가야 한다. 소수 마을에서 A마을까지 한 번에 가고 싶지만 두 마을 사이의 거리가 소수가 아니면 그럴 수 없다. 이때는 다른 마을을 경유해서 가야 한다. 경유하는 마을로 갈 때도 현재 위치에서 그 마을까지의 거리가 소수여야 한다.

소수 마을과 경유할 수 있는 마을, A마을의 위치가 좌표평면 위의 점으로 주어진다. 승욱이가 규칙을 지키면서 A마을까지 가는 가장 짧은 길을 찾도록 도와주자.

마을 사이의 거리는 두 점 사이의 거리에서 정수 부분만 취급한다. 예를 들어 거리가 3.14153.1415이면 소수점 아래를 버려 33으로 취급한다. 소수인지 판정할 때와 이동한 거리를 더할 때 모두 이렇게 버림한 값을 쓴다.

입력

첫째 줄에 소수 마을의 위치 (X1,Y1)(X_1, Y_1)과 A마을의 위치 (X2,Y2)(X_2, Y_2)X1X_1 Y1Y_1 X2X_2 Y2Y_2 순서로 주어진다.

둘째 줄에 경유할 수 있는 마을의 개수 NN이 주어진다. (0N40000 \le N \le 4000)

셋째 줄부터 NN개의 줄에 경유할 수 있는 마을의 위치 X3X_3 Y3Y_3이 한 줄에 하나씩 주어진다.

모든 마을의 좌표는 절댓값이 30003000을 넘지 않는 정수이다.

출력

소수 마을의 규칙을 지키면서 A마을까지 가는 방법 중 가장 짧은 길의 거리 합을 출력한다. 거리 합은 각 이동의 버림한 거리를 더한 정수이다.

규칙을 지켜서 A마을까지 갈 수 있는 방법이 없으면 1-1을 출력한다.

힌트

첫 번째 예제에서 소수 마을 (1,2)(1, 2)와 A마을 (5,4)(5, 4) 사이의 거리는 204.47\sqrt{20} \approx 4.47이므로 44로 취급하고, 44는 소수가 아니다. 마을 C (4,1)(4, 1)을 경유하면 두 번의 이동 거리가 모두 103.16\sqrt{10} \approx 3.16, 즉 33이므로 거리 합은 66이다.