캥거루 경주
시간 제한5초메모리 제한1024 MB
원형 트랙의 구간 수 n과 캥거루의 시작 위치 x가 주어질 때, y(y-1)칸씩 뛰어 1번 구간에 도달하는 최소 점프 횟수를 구합니다. 도달할 수 없으면 impossible을 출력합니다.
문제
오스트리아는 캥거루가 많은 나라로 잘 알려져 있다. 캥거루들은 몸 상태를 유지하기 위해 각자 육상 트랙을 하나씩 갖고 있으며, 매년 열리는 Austrian Pogostick Jumping Event를 그곳에서 준비한다.
각 육상 트랙은 길이가 미터인 구간 개로 이루어진다. 구간에는 번부터 번까지 순서대로 번호가 붙어 있다. 트랙은 순환형이어서 번 구간 다음에는 번 구간이 온다.
각 트랙에서 캥거루는 구간 하나에 있다. 캥거루는 유한한 횟수만큼 점프할 수 있다. 캥거루가 번 구간에 있으면 한 번의 점프로 구간만큼 앞으로 이동한다. 캥거루가 번 구간에 도달하는 데 필요한 최소 점프 횟수를 구하라.
입력
첫 줄에 캥거루의 수 ()가 주어진다. 이어지는 개의 줄에는 각각 두 정수 , ()가 주어진다. 은 트랙의 구간 수이고, 는 그 트랙에서 캥거루의 처음 위치이다.
출력
각 캥거루에 대해, 유한한 횟수의 점프로 번 구간에 도달할 수 있다면 필요한 최소 점프 횟수를 출력한다. 도달할 수 없다면 impossible을 출력한다.
힌트
계산 중간값이 64비트 정수 범위를 넘을 수 있다. 이런 큰 값을 저장하려면 C++에서는 __int128을, Java나 Kotlin에서는 java.math.BigInteger를 쓴다. Python은 정수 크기 제한이 없으므로 별도 처리가 필요 없다.