언덕길 주행

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

문제

상근이는 근처 산에 차를 타고 올라왔고, 이제 최대한 빨리 집으로 돌아가려고 한다. 차에 남은 기름이 얼마 없기 때문에 최대한 효율적으로 운전해야 한다.

집으로 가는 길의 일부는 오르막이고 일부는 내리막이다. 각 도로 구간은 저마다 다른 길이와 경사를 가진다. 차에 남은 기름의 양이 주어질 때, 집에 도착하는 데 걸리는 최소 시간을 구하시오.

차의 연료 소비는 간단하게 모델링된다. 단위 거리당 연료 소비량 $c$ (리터/km)는 속도 $v$에 비례하며, 도로의 경사 $s$에 의해 값이 조정된다.

$$c = \max(0,\ \alpha v + \beta s)$$

여기서 $\alpha$는 평지에서의 연료 소비 계수, $v$는 속도(km/h), $s$는 도로의 경사, $\beta$는 양의 상수이다. 예를 들어 어떤 언덕을 연료 없이 $10$ km/h로 내려갈 수 있다면, 같은 언덕을 올라갈 때 드는 연료는 평지에서 $10$ km/h 더 빠르게 달릴 때와 같다. 가속과 감속은 연료를 쓰지 않고 즉시 이루어진다. 또한 차에는 최고 속도 $v_{max}$가 있어 이를 넘을 수 없다.

거리는 미터 단위로 주어진다. 수평 길이가 $x$이고 높이 변화가 $y$인 도로 구간에서 실제 주행 거리는 $\sqrt{x^2 + y^2}$ 미터이고, 그 경사는 $s = y / x$이다. 속도는 km/h, 이동 시간은 시간(hour) 단위로 측정한다.

입력

첫째 줄에 테스트 케이스의 개수 $T$ ($1 \le T \le 100$)가 주어진다. 각 테스트 케이스는 다음과 같이 주어진다.

각 테스트 케이스의 첫째 줄에는 네 실수 $\alpha$ ($0.5 \le \alpha \le 100$), $\beta$ ($0.1 \le \beta \le 100$), $v_{max}$ ($10 \le v_{max} \le 200$), $f$ ($0 \le f \le 50$)가 주어진다. $v_{max}$는 차의 최고 속도(km/h), $f$는 남은 기름의 양(리터)이다.

다음 줄에는 도로의 개수 $r$ ($1 \le r \le 10000$)이 주어진다.

이어지는 $r$개의 줄에는 각각 두 실수 $x_i$와 $y_i$ ($1 \le x_i \le 1000$, $-1000 \le y_i \le 1000$)가 주어지며, 이는 $i$번째 도로의 수평 길이와 높이 변화(미터)이다. 각 도로의 경사는 일정하다.

출력

각 테스트 케이스마다 집으로 돌아오는 최소 시간(시간 단위)을 소수점 아래 정확히 6자리로 반올림하여 한 줄에 출력한다 (예: printf("%.6f")). 남은 기름으로 집에 돌아올 수 없으면 대신 IMPOSSIBLE을 출력한다. 집에 돌아올 수 있는 경우 걸리는 시간은 항상 24시간 미만이다. 테스트 데이터는 정답이 반올림 경계에 가깝지 않도록 구성되어 있다.