이진 탐색 게임
시간 제한2초메모리 제한64 MB
단조 증가 수열 a가 주어질 때 각 x를 a_x번 이하의 비교 질문으로 항상 맞힐 수 있는지 판정하고 가능한 첫 질문 q를 모두 구한다.
문제
지학이는 이진 탐색을 가르치려고 다음 게임을 만들었다.
- 컴퓨터가 이상 이하의 정수 를 무작위로 하나 정하고, 플레이어에게 을 알려준다.
- 플레이어는 정수 를 골라 "가 이하입니까?"라고 묻는다. 컴퓨터는 예 또는 아니오로 답한다. 이 질문은 원하는 만큼 할 수 있고, 로 고를 수 있는 정수에는 제한이 없다.
- 를 알아냈다고 판단하면 플레이어는 추측값 를 대고 "가 입니까?"라고 한 번 묻는다. 컴퓨터는 판정을 출력하고 게임을 끝낸다.
수업에서 학생들이 이 게임으로 이진 탐색을 익히던 어느 날, 재현이가 최적의 방법을 미리 알려주는 바람에 게임이 너무 쉬워졌다. 그래서 지학이는 규칙을 이렇게 바꿨다. 컴퓨터는 이면서 그때까지 한 "가 이하입니까?" 질문의 수가 번 이하일 때만 성공을 출력하고, 그렇지 않으면 실패를 출력한다. 마지막 확인 질문은 이 수에 세지 않는다. 지학이는 정렬된 수열을 좋아하므로 수열 는 을 만족한다.
재현이는 이렇게 바뀐 게임에서 항상 성공하는 방법을 찾지 못했고, 그런 방법은 없다고 주장했다. 지학이도 증명하지 못해서 당신에게 도움을 청했다.
컴퓨터가 어떤 를 정했든 항상 성공하는 질문 방법이 있는지 판정하고, 있다면 첫 번째 질문으로 물어봐도 되는 를 모두 구하라. 어떤 가 첫 번째 질문으로 가능하다는 것은, 첫 질문을 "가 이하입니까?"로 시작하고 그다음부터는 받은 답에 따라 질문을 골라서 모든 에 대해 성공하는 방법이 존재한다는 뜻이다.
입력
첫째 줄에 ()이 주어진다.
둘째 줄에 개의 정수 ()이 공백을 사이에 두고 주어진다.
출력
첫째 줄에 첫 번째 질문으로 물어봐도 되는 의 가짓수를 출력한다. 그런 가 무한히 많으면 가짓수 대신 inf를 출력한다.
둘째 줄에 첫 번째 질문으로 물어봐도 되는 를 오름차순으로 공백을 사이에 두고 출력한다. 그런 가 하나도 없거나 무한히 많으면 둘째 줄에는 아무것도 출력하지 않는다.