골드리치의 비밀 금고

시간 제한2초메모리 제한1024 MB

문제

골드리치는 메이플 용사들을 위해 새로운 비밀 금고 이벤트를 열었다. 메이플 용사는 각자 금고에 비밀번호를 입력해 이벤트에 응모하게 된다. 기존의 황금 금고, 다이아 금고 이벤트에서는 응모된 비밀번호 중 중복되지 않는 작은 수를 입력한 용사들에게 상품을 지급했다.

골드리치는 이번 루비 금고 이벤트에서 큰돈을 들여 모든 용사에게 같은 개수의 상품을 지급할 계획이다. 대신 각 용사가 받을 상품 개수는 용사들이 입력하는 비밀번호에 따라 달라진다. 상품 개수를 결정하는 방식은 아래와 같다.

  • 각 용사 $i$는 정수 $A_i$를 비밀번호로 입력한다. $(0 \le A_i \le 10^9$; $1 \le i \le N)$
  • $[A_l, A_{l + 1}, \cdots, A_{r-1}, A_r]$에서 존재하지 않는 가장 작은 음이 아닌 정수를 $C_{lr}$라고 한다. $(1 \le l \le r \le N)$
  • 가능한 $C_{lr}$ 중 존재하지 않는 가장 작은 음이 아닌 정수가 각 용사가 받을 상품 개수가 된다.

$\{C_{11},C_{22},C_{33},C_{12},C_{23},C_{13}\} = \{0,0,1,0,1,3\} \rightarrow 2$

메이플 용사들은 단합하여 최대한 많은 상품을 받으려 했지만, 용사의 수가 너무나 많은 까닭에 의견을 모으지 못한 채로 비밀번호를 모두 입력해 버리고 말았다.

메이플 용사로서 루비 금고 이벤트에 참가한 팬텀 역시 더 많은 상품을 원하고 있었다. 비밀번호가 모두 입력된 것을 본 팬텀은, 메이플 월드 최고의 괴도답게 비밀번호를 조작해서 받게 될 상품 수를 최대한 크게 만드는 작전을 세웠다.

다른 용사가 입력한 비밀번호를 바꾸는 것은 팬텀에게는 쉬운 일이지만, 금방 발각될 위험이 있기 때문에 입력된 비밀번호 $A_1, A_2, \cdots, A_N$의 순서만 바꾸려고 한다.

상품 개수가 최대가 되도록 팬텀이 재배열한 순서를 구해 보자.

입력

첫째 줄에 이벤트에 응모한 메이플 용사의 인원 수 $N$이 주어진다. ($1 \le N \le 1\, 000\, 000$)

둘째 줄에 $N$개의 정수 $A_1, A_2, \cdots, A_N$이 공백으로 구분되어 주어진다. ($0 \le A_i \le 10^9$)

출력

첫째 줄에 만들 수 있는 최대 상품 개수를 출력한다.

둘째 줄에 그때의 재배열된 $A_1, A_2, \cdots, A_N$을 공백으로 구분하여 출력한다. 가능한 답이 여러 개라면 그중 아무 것이나 출력한다.