3단 가시

시간 제한2초메모리 제한1024 MB

요약
매 프레임 1씩 이동하는 큐브가 점프로 3프레임 동안 공중에 떠서 모든 가시를 넘고 위치 N에 도달할 수 있는지 판별한다.
난이도

보통10점 중 5점

유형
그리디, 시뮬레이션, 수학
정답자
아직 제출이 없습니다

문제

쿠옹이는 큐브가 가시를 뛰어넘는 게임을 하고 있다.

이 게임의 모든 맵에서 큐브는 위치 00에서 출발하여 매 프레임 11만큼 이동한다. 큐브가 위치 NN에 도달한다면 공중에 떠 있는 상태인지와 관계없이 맵을 클리어하게 된다.

큐브는 프레임마다 공중에 떠 있는 상태가 아니라면 점프할 수 있다. 큐브가 점프하면 점프한 다음 프레임부터 33프레임 동안 공중에 떠 있는 상태가 된다. 예를 들어 11프레임에 점프를 하면 22프레임부터 44프레임까지는 공중에 떠 있는 상태이다가 55프레임에 공중에 떠 있는 상태가 아니게 된다.

만약 큐브가 공중에 떠 있는 상태가 아닐 때 어떤 가시와 위치가 일치하면 큐브는 가시에 부딪혀 죽고 클리어에 실패하게 된다.

쿠옹이는 어떤 맵은 클리어가 불가능하다고 생각했다. 쿠옹이를 위해 맵의 클리어 가능성을 판별해 주자.

입력

첫째 줄에 쿠옹이가 궁금해한 맵의 개수 T(1≤T≤1,000)T(1 \le T \le 1\\,000)가 주어진다.

다음 줄부터 TT개의 맵이 아래와 같은 형식으로 주어진다.

  • 첫째 줄에 맵의 길이 NN이 주어진다. (1≤N≤1018)(1 \le N \le 10^{18})
  • 둘째 줄에 가시의 개수 XX가 주어진다. (1≤X≤min⁡(N−1,1,000))(1 \le X \le \min(N - 1, 1\\,000))
  • 셋째 줄에 각 가시의 위치 P_1P\_1, P_2P\_2, ⋯\cdots, P_XP\_X가 공백으로 구분되어 주어진다. (1≤P_1<P_2<⋯<P_X≤N−1)(1 \le P\_1 < P\_2 < \cdots < P\_X \le N-1)

입력되는 모든 수는 정수이다.

출력

맵이 주어질 때마다 클리어 가능하다면 POSSIBLE, 불가능하다면 IMPOSSIBLE을 출력하라.

예제1

  1. 예제 1

    입력
    3
    4
    3
    1 2 3
    5
    2
    1 4
    10
    4
    5 6 7 9
    
    예상 출력
    POSSIBLE
    IMPOSSIBLE
    POSSIBLE