이진 탐색 게임

단조 증가 수열 a가 주어질 때 각 x를 a_x번 이하의 비교 질문으로 항상 맞힐 수 있는지 판정하고 가능한 첫 질문 q를 모두 구한다.

어려움8이분 탐색그리디동적 계획법아직 제출이 없습니다시간 제한2초메모리 제한64 MB

문제

지학이는 이진 탐색을 가르치려고 다음 게임을 만들었다.

  1. 컴퓨터가 11 이상 nn 이하의 정수 xx를 무작위로 하나 정하고, 플레이어에게 nn을 알려준다.
  2. 플레이어는 정수 qq를 골라 "xxqq 이하입니까?"라고 묻는다. 컴퓨터는 예 또는 아니오로 답한다. 이 질문은 원하는 만큼 할 수 있고, qq로 고를 수 있는 정수에는 제한이 없다.
  3. xx를 알아냈다고 판단하면 플레이어는 추측값 vv를 대고 "xxvv입니까?"라고 한 번 묻는다. 컴퓨터는 판정을 출력하고 게임을 끝낸다.

수업에서 학생들이 이 게임으로 이진 탐색을 익히던 어느 날, 재현이가 최적의 방법을 미리 알려주는 바람에 게임이 너무 쉬워졌다. 그래서 지학이는 규칙을 이렇게 바꿨다. 컴퓨터는 v=xv = x이면서 그때까지 한 "xxqq 이하입니까?" 질문의 수가 axa_x번 이하일 때만 성공을 출력하고, 그렇지 않으면 실패를 출력한다. 마지막 확인 질문은 이 수에 세지 않는다. 지학이는 정렬된 수열을 좋아하므로 수열 aaa1a2ana_1 \le a_2 \le \cdots \le a_n을 만족한다.

재현이는 이렇게 바뀐 게임에서 항상 성공하는 방법을 찾지 못했고, 그런 방법은 없다고 주장했다. 지학이도 증명하지 못해서 당신에게 도움을 청했다.

컴퓨터가 어떤 xx를 정했든 항상 성공하는 질문 방법이 있는지 판정하고, 있다면 첫 번째 질문으로 물어봐도 되는 qq를 모두 구하라. 어떤 qq가 첫 번째 질문으로 가능하다는 것은, 첫 질문을 "xxqq 이하입니까?"로 시작하고 그다음부터는 받은 답에 따라 질문을 골라서 모든 xx에 대해 성공하는 방법이 존재한다는 뜻이다.

입력

첫째 줄에 nn (1n1061 \le n \le 10^6)이 주어진다.

둘째 줄에 nn개의 정수 a1,a2,,ana_1, a_2, \ldots, a_n (1a1a2an1091 \le a_1 \le a_2 \le \cdots \le a_n \le 10^9)이 공백을 사이에 두고 주어진다.

출력

첫째 줄에 첫 번째 질문으로 물어봐도 되는 qq의 가짓수를 출력한다. 그런 qq가 무한히 많으면 가짓수 대신 inf를 출력한다.

둘째 줄에 첫 번째 질문으로 물어봐도 되는 qq를 오름차순으로 공백을 사이에 두고 출력한다. 그런 qq가 하나도 없거나 무한히 많으면 둘째 줄에는 아무것도 출력하지 않는다.