달리기 속력 측정
시간 제한2초메모리 제한256 MB
민혁은 시간을 정해 위치를 확인하는 예/아니오 관측으로 유라의 속도 구간을 너비 t까지 좁히는 데 필요한 최악 기준 최소 확인 횟수를 구합니다.
문제
코치 민혁이는 선수 유라의 체력을 재려고 미터 달리기를 시킨다. 유라는 출발선에서 결승선까지 이상 이하인 실수 속력으로 일정하게 달린다. 민혁이는 그 속력이 정확히 얼마인지 모른다.
기록을 잴 타이머를 두고 온 민혁이는 다른 방법으로 속력의 범위를 좁히기로 한다. 민혁이는 원하는 시각에 코스 위의 한 지점으로 가서 유라가 그 지점에 이미 도달했는지를 확인한다. 지점은 출발점에서 미터 떨어진 곳이고 이다. 확인의 결과는 "이미 도달했다"와 "아직 도달하지 않았다" 둘 중 하나다.
지점으로 가는 데 최소 초가 걸린다. 그래서 출발 후 초가 지나기 전에는 첫 확인을 할 수 없고, 한 번 확인한 뒤에도 초가 지나기 전에는 다음 확인을 할 수 없다. 번째 확인은 아무리 빨라도 출발 후 초에 이루어진다.
민혁이는 앞선 확인의 결과를 보고 다음 확인의 시각과 지점을 정한다. 확인을 모두 마쳤을 때 결과와 모순되지 않는 속력 구간의 길이가 이하이면, 민혁이는 오차 안에서 유라의 속력을 말할 수 있고 측정에 성공한 것이다.
유라의 속력이 무엇이든 확인 횟수가 가장 적도록 민혁이가 전략을 짤 때, 최악의 경우의 확인 횟수를 구하여라.
입력
첫째 줄에 테스트 케이스의 수 ()가 주어진다.
이어지는 개의 줄에 각 테스트 케이스의 정수 , , , , 가 공백으로 구분되어 주어진다. (, )
출력
각 테스트 케이스마다 답을 한 줄에 하나씩 출력한다.
오차 안에서 유라의 속력을 알아낼 방법이 없으면 impossible을 출력한다. 알아낼 수 있으면 최악의 경우에 필요한 확인 횟수의 최솟값을 출력한다. 확인을 한 번도 하지 않아도 되면 0을 출력한다.