화장실 칸 고르기 (라지)

사람들이 최소 거리를 최대로, 그다음 최대 거리를 최대로, 그다음 왼쪽부터라는 규칙으로 좌변기에 자리를 고를 때, N이 10^18까지 커질 수 있는 상황에서 마지막 사람이 고른 자리의 최대 거리와 최소 거리를 구한다.

보통7그리디수학구현면접 대비아직 제출이 없습니다시간 제한5초메모리 제한512 MB

문제

어떤 화장실에는 한 줄로 늘어선 칸이 N + 2개 있다. 양쪽 끝 두 칸은 화장실 관리인이 늘 쓰고 있어 언제나 사용 중이고, 나머지 N개가 이용자용이다.

화장실에 들어온 사람은 다른 사람과 최대한 멀리 떨어진 칸을 고른다. 헷갈리지 않도록 고르는 규칙은 다음과 같이 정해져 있다. 비어 있는 칸 SS마다 값 두 개 LSL_SRSR_S를 구한다. LSL_SSS와 왼쪽으로 가장 가까운 사용 중인 칸 사이에 있는 빈 칸의 수이고, RSR_SSS와 오른쪽으로 가장 가까운 사용 중인 칸 사이에 있는 빈 칸의 수다. 그다음 min(LS,RS)\min(L_S, R_S)가 가장 큰 칸만 남긴다. 그런 칸이 하나뿐이면 그 칸을 고르고, 여럿이면 그중에서 max(LS,RS)\max(L_S, R_S)가 가장 큰 칸을 고른다. 그래도 여럿이 남으면 그중 가장 왼쪽 칸을 고른다.

이제 K명이 화장실에 들어온다. 앞사람이 칸을 고른 뒤에 다음 사람이 들어오고, 아무도 화장실을 떠나지 않는다.

마지막 사람이 칸 SS를 골랐을 때 max(LS,RS)\max(L_S, R_S)min(LS,RS)\min(L_S, R_S)의 값을 구하라.

입력

첫째 줄에 테스트 케이스의 수 T가 주어진다. 다음 T개 줄에 테스트 케이스가 한 줄에 하나씩 주어진다. 각 줄에는 위에서 설명한 정수 NK가 공백으로 구분되어 주어진다.

제한

  • 1T1001 \le T \le 100
  • 1KN1 \le K \le N
  • 1N10181 \le N \le 10^{18}

출력

각 테스트 케이스마다 Case #x: y z 형식으로 한 줄씩 출력한다. x는 1부터 시작하는 테스트 케이스 번호, y는 마지막에 들어온 사람이 고른 칸 SSmax(LS,RS)\max(L_S, R_S), z는 같은 칸의 min(LS,RS)\min(L_S, R_S)다.

힌트

사용 중인 칸을 O, 빈 칸을 .로 적는다.

예제의 1번 케이스에서 첫 사람은 가운데 두 칸 중 왼쪽 칸을 써서 O.O..O가 된다. 이어서 두 번째이자 마지막 사람이 바로 오른쪽 칸을 쓰므로 한쪽에는 빈 칸이 1개 남고 다른 쪽에는 빈 칸이 없다.

2번 케이스에서 첫 사람은 한가운데 칸을 써서 O..O..O가 된다. 두 번째이자 마지막 사람은 가장 왼쪽 칸을 쓴다.

3번 케이스에서 첫 사람은 가운데 두 칸 중 왼쪽 칸을 써서 O..O...O가 된다. 두 번째 사람은 연속한 빈 칸 세 개의 한가운데를 쓴다.

4번 케이스에서는 누가 어느 칸을 고르든 마지막에는 모든 칸이 사용 중이다.

5번 케이스에서 한 명뿐인 사람은 가운데 두 칸 중 왼쪽 칸을 쓴다.