만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

마리오

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

요약
일정한 구간을 왕복하는 배들 사이에서 위치가 겹치는 순간에만 갈아타며 반대편 강둑에 가장 빨리 도착하는 시각을 구합니다.
난이도

보통10점 중 7점

유형
최단 경로, 그래프, 수학
정답자
아직 제출이 없습니다

문제

슈퍼 마리오의 어려운 스테이지를 깨려고 AI를 만들어 대신 플레이시키기로 했다. 첫 단계로 적은 빼고 이동만 구현한다. 이 문제에서 구현할 이동은 강 건너기다.

강의 폭은 WW이고, 강은 x=[0,W]x = [0, W] 구간을 차지한다. 강을 건너는 수단은 배다. 배 ii는 구간 [Li,Ri][L_i, R_i] 안에서만 오가고, 모든 배는 높이 y=0y = 0에 있다. 배는 크기가 없는 점으로 본다.

t=0t = 0에 마리오는 x=0x = 0에 있고, 모든 배는 각자의 왼쪽 끝점에 있다. 배는 초당 11의 속력으로 두 끝점 사이를 계속 왕복한다. 즉 구간이 [L,R][L, R]인 배는 t=0t = 0에 x=Lx = L, t=R−Lt = R - L에 x=Rx = R, t=2(R−L)t = 2(R - L)에 다시 x=Lx = L, t=3(R−L)t = 3(R - L)에 다시 x=Rx = R에 있다.

마리오는 아직 점프를 못 한다. 그래서 두 배의 xx좌표가 같아지는 순간에만 한 배에서 다른 배로 옮겨탈 수 있다. 시간은 연속이므로 그 순간이 정수 시각이 아니어도 옮겨탈 수 있고, 옮겨타는 데 걸리는 시간은 없다. 같은 xx좌표에 배가 여러 척 있으면 그중 어느 배로든 옮겨탈 수 있다.

마리오는 x=0x = 0에 있는 배에 올라타서 출발하고, 타고 있는 배가 x=Wx = W에 닿는 순간 강을 건넌 것으로 본다. x=0x = 0에서 x=Wx = W까지 가는 데 걸리는 최소 시간을 구하거나, x=Wx = W에 도달할 수 없음을 판정하라.

입력

첫 줄에 테스트 케이스의 수 TT가 주어진다. (1≤T≤201 \le T \le 20)

각 테스트 케이스는 다음과 같이 주어진다.

  • 첫 줄에 배의 수 NN과 강의 폭 WW가 공백으로 구분되어 주어진다. (0≤N≤1000 \le N \le 100, 1≤W≤5001 \le W \le 500)
  • 다음 NN개 줄에 배 ii가 오가는 구간 [Li,Ri][L_i, R_i]를 나타내는 두 정수 LiL_i와 RiR_i가 공백으로 구분되어 주어진다. (0≤Li<Ri≤W0 \le L_i < R_i \le W)

출력

각 테스트 케이스마다 x=Wx = W에 도달하는 가장 이른 시각을 한 줄에 정수로 출력한다. 도달할 수 있다면 그 시각은 항상 정수다. 도달할 수 없으면 IMPOSSIBLE을 출력한다.

노트

첫 번째 예제 입력의 첫 테스트 케이스에서 두 배는 주기가 같아 항상 11만큼 떨어진 채 움직인다. 그래서 한 배에서 다른 배로 옮겨탈 수 없다.

같은 예제 입력의 두 번째 테스트 케이스에서는 시각 22에 세 번째 배로, 시각 1616에 두 번째 배로 옮겨타면 시각 2424에 x=10x = 10에 닿는다.

예제2

  1. 예제 1

    입력
    2
    2 2
    0 1
    1 2
    3 10
    0 8
    2 10
    2 3
    
    예상 출력
    IMPOSSIBLE
    24
    
  2. 예제 2

    입력
    3
    1 5
    0 5
    0 7
    1 1
    0 1
    
    예상 출력
    5
    IMPOSSIBLE
    1