Malvika가 프로그래밍 캠프를 운영한다
시간 제한1초메모리 제한1024 MB
일렬로 선 n명이 m개의 주제를 모두 배우는 데 필요한 최소 시간을 구합니다. 맨 오른쪽의 Malvika가 가르치고, 매 시간 이웃끼리 한 번씩 가르칠 수 있습니다.
문제
Malvika는 프로그래밍 대회에서 많은 지식을 쌓았다. 그 지식을 바탕으로 인도의 차세대 프로그래머를 키우려고 프로그래밍 캠프를 열었다. 토론 세션에는 명이 참가한다. 학생 명과 Malvika 본인이다. 참가자들은 왼쪽에서 오른쪽으로 1번부터 번까지 번호가 매겨진 일렬로 앉는다. Malvika는 번 자리에 앉는다. 그녀는 학생들에게 competitive programming 주제 개를 가르치려 한다. 참가자는 모두 초보자다. 처음에는 앞의 명이 어떤 주제도 모르고, 번째 사람(Malvika)만 모든 주제를 안다.
한 사람이 옆 사람에게서 주제 하나를 배우는 데 1시간이 걸린다. 한 사람은 같은 시간에 가르치면서 동시에 배울 수 없다. 어느 1시간에든 한 사람은 자신이 아는 주제를 옆 사람 한 명에게 가르치거나, 옆 사람 한 명에게서 주제를 배우거나, 아무것도 하지 않는다. 어느 시간에 번 사람이 번 사람에게서 배우고 있다면, 그 시간에 번 사람은 반드시 번 사람을 가르치고 있어야 한다. 여러 사람이 동시에 일할 수도 있다. 예를 들어 4번 사람이 3번 사람을 가르치는 동안 1번 사람은 2번 사람을 가르치거나 2번 사람에게서 배울 수 있다.
모든 사람이 개의 주제를 전부 배우는 데 걸리는 최소 시간을 구하라.
입력
첫 줄에 테스트 케이스 개수를 나타내는 정수 가 주어진다. 각 테스트 케이스는 한 줄이며, 문제에서 정의한 두 정수 과 이 공백으로 구분되어 주어진다.
출력
각 테스트 케이스마다 답을 나타내는 정수를 한 줄에 하나씩 출력한다.
제한
힌트
첫 번째 예시에서는 사람이 두 명이다. 두 번째 사람은 Malvika이며, 첫 번째 사람에게 주제 하나만 가르치면 된다. 이는 1시간이면 끝난다.
두 번째 예시에서는 사람이 세 명이다. 3번 사람인 Malvika는 1번과 2번 사람에게 주제 두 개를 가르쳐야 한다. 1시간째에 그녀가 첫 번째 주제를 2번 사람에게 가르친다. 2시간째에 2번 사람이 그 주제를 1번 사람에게 가르친다. 3시간째에 Malvika가 두 번째 주제를 2번 사람에게 가르친다. 4시간째에 2번 사람이 그 주제를 1번 사람에게 가르친다. 따라서 총 4시간이 걸린다.