로봇

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

문제

평면 위에 nn개의 점 (x1,y1),,(xn,yn)(x_1, y_1), \dots, (x_n, y_n)이 주어진다. 로봇을 점 (x1,y1)(x_1, y_1)에서 출발시켜 점 (xn,yn)(x_n, y_n)까지 이동시키는 것이 목표이다.

로봇은 현재 위치한 점 (xi,yi)(x_i, y_i)에서 거리가 RR 이하인 다른 임의의 점 (xj,yj)(x_j, y_j)로 이동할 수 있으며, 이동 속도는 초당 11 단위이다. 단, 이동을 시작하기 전에 로봇은 목적지 (xj,yj)(x_j, y_j)를 향하도록 방향을 회전해야 하며, 회전 속도는 초당 11도이다.

로봇이 점 (x1,y1)(x_1, y_1)에서 점 (xn,yn)(x_n, y_n)까지 이동하는 데 필요한 최소 시간을 구하여라. 로봇은 처음에 점 (xn,yn)(x_n, y_n)을 향하고 있다고 가정한다.

부동소수점 정밀도 문제를 피하려면 float 대신 double 자료형을 사용하는 것이 좋다. 반올림하기 전의 최소 시간은 가장 가까운 정수와의 차이가 0.40.4 이하임이 보장된다. 역삼각함수를 사용한다면 acos()asin()보다 atan2()를 사용하는 것을 권장한다.

입력

입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스의 첫 줄에는 정수 RRnn이 주어진다. RR은 로봇이 한 번에 이동할 수 있는 두 점 사이의 최대 거리이고 (10R100010 \le R \le 1000), nn은 점의 개수이다 (2n202 \le n \le 20).

이어지는 nn개의 줄 중 ii번째 줄에는 두 정수 xix_iyiy_i가 주어진다 (1000xi,yi1000-1000 \le x_i, y_i \le 1000). 모든 점은 서로 다르다.

입력의 끝은 R=n=1R = n = -1인 테스트 케이스로 표시된다.

출력

각 테스트 케이스마다 한 줄에, 로봇이 점 (x1,y1)(x_1, y_1)에서 점 (xn,yn)(x_n, y_n)까지 이동하는 데 필요한 최소 시간(초)을 가장 가까운 정수로 반올림하여 출력한다. 이동이 불가능한 경우에는 대신 impossible을 출력한다.