관광객 한 무리가 계곡에 있는 관광 지점 n개를 p1,p2,…,pn 순서 그대로 둘러본다. 이동 수단은 승용차, 인력거, 당나귀 수레처럼 종류가 여럿이고 모두 전화로 불러야 한다. 계곡 깊은 곳은 관광 지점에서만 전화가 터지므로 이동 수단은 관광 지점에서만 바꿀 수 있다.
i번째 구간은 pi에서 pi+1까지 가는 길이다. 길이는 di이고, 진행 방향을 직전 구간에서 hi만큼 튼다. 첫 구간도 h1만큼 튼 것으로 보므로 i번째 구간의 진행 방향은 Hi=h1+h2+⋯+hi이다.
j번째 종류의 기사는 다음 두 조건을 모두 만족할 때만 px에서 py까지 (x<y) 한 번에 태워 준다.
여정 전체를 연속한 구간 묶음으로 나누고 묶음마다 기사를 한 번 부른다. 같은 종류를 다시 써도 되지만, 앞 기사가 그만두면 같은 종류라도 새로 불러야 하고 그만큼 호출 횟수가 늘어난다. p1에서 출발해 pn까지 주어진 순서대로 모두 방문하는 데 필요한 최소 호출 횟수를 구하라.
첫 줄에 이동 수단의 종류 수 t (1≤t≤200)와 방문할 지점의 수 n (1≤n≤5×104)이 공백으로 구분되어 주어진다.
다음 t개의 줄에는 종류마다 음이 아닌 정수 두 개가 주어진다. 첫 번째 정수 dminj (0≤dminj≤106)는 그 종류가 요구하는 최소 이동 거리이고, 두 번째 정수 aj (0≤aj≤3.6×105)는 그 종류가 허용하는 최대 방향 폭이다.
다음 n−1개의 줄에는 i번째 구간의 길이 di (0≤di≤106)와 방향 변화량 hi (−1.8×105<hi<1.8×105)가 주어진다. n=1이면 이 줄은 없다.
각도는 모두 1000분의 1도 단위이다.
p1부터 pn까지 주어진 순서대로 모두 방문하는 데 필요한 최소 호출 횟수를 한 줄에 출력한다. 방문할 방법이 없으면 IMPOSSIBLE을 출력한다. n=1이면 이동하지 않아도 되므로 0을 출력한다.