수리검 게임

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

요약
두 선수가 더미에서 1개부터 N개까지의 수리검을 가져가되 직전 상대가 가져간 개수는 그대로 가져갈 수 없다. 이기는 가장 작은 첫 수를 구한다.
난이도

보통10점 중 7점

유형
동적 계획법, 게임 이론, 구현
정답자
아직 제출이 없습니다

문제

닌자는 훈련하는 데 많은 시간을 씁니다. 훈련과 훈련 사이의 시간을 보내려고 닌자들은 수리검(적에게 던지는, 모서리가 날카로운 금속 별)으로 게임을 즐깁니다.

두 명이 하는 이 게임에는 수리검이 쌓인 더미 하나가 있습니다. 두 사람은 번갈아 차례를 가지며, 자기 차례에 더미에서 수리검을 가져갑니다. 한 번에 최소 11개, 최대 NN개까지 가져갈 수 있습니다. 마지막 수리검을 가져가는 사람이 이깁니다.

이 게임은 곧 필승 전략이 알려져 시시해졌고, 그래서 한 가지 규칙이 추가되었습니다. 직전에 상대가 가져간 개수와 똑같은 개수는 가져갈 수 없습니다(상대의 마지막 수를 그대로 따라 할 수 없습니다). 만약 더미에 수리검이 정확히 11개 남아 있고 상대가 방금 11개를 가져갔다면, 지금 차례인 사람은 둘 수 있는 수가 없어 패배합니다.

주어진 상황에서 지금 차례인 사람이 어떻게 두어야 이길 수 있는지 구해 보세요.

입력

첫째 줄에 테스트 케이스의 개수 TT가 주어집니다. 이어지는 각 테스트 케이스는 다음 형식을 따릅니다.

  • 한 줄에 세 정수 SS, NN, PP가 공백으로 구분되어 주어집니다 (1≤S≤1000001 \le S \le 100000, 2≤N≤1002 \le N \le 100, 1≤P≤N1 \le P \le N). 각각 더미에 쌓인 수리검의 개수, 한 번에 가져갈 수 있는 최대 개수, 그리고 직전에 상대가 가져간 개수를 뜻합니다.

출력

각 테스트 케이스마다 한 줄에 정수 하나를 출력합니다. 지금 차례인 사람이 승리를 확정하기 위해 가져갈 수 있는 가장 적은 수리검의 개수를 출력하세요. 이기는 수가 전혀 없다면 00을 출력합니다.

예제1

  1. 예제 1

    입력
    5
    12 4 1
    5 5 5
    6 6 6
    100 5 5
    100 5 1
    
    예상 출력
    2
    0
    3
    1
    2