키 삽입

아직 제출이 없습니다시간 제한1초메모리 제한512 MB

문제

매크로하드(Macrohard)사의 직원인 여러분은 정수 키를 저장하는 새로운 자료구조를 구현하라는 요청을 받았습니다.

키는 무한히 많은 칸을 가진 배열 AA처럼 동작하는 특별한 정렬된 컬렉션에 저장됩니다. 칸의 번호는 11부터 시작하며, 처음에는 모든 칸이 비어 있습니다. 이 컬렉션은 다음 한 가지 연산 Insert(L,K)\text{Insert}(L, K)를 지원합니다. 여기서 LL은 칸의 번호이고 KK는 양의 정수입니다.

Insert(L,K)\text{Insert}(L, K)는 다음과 같이 재귀적으로 정의됩니다.

  • A[L]A[L]이 비어 있으면 A[L]KA[L] \leftarrow K로 설정합니다.
  • A[L]A[L]이 이미 채워져 있으면 먼저 Insert(L+1,A[L])\text{Insert}(L+1, A[L])을 수행한 뒤 A[L]KA[L] \leftarrow K로 설정합니다.

NN개의 번호 L1,L2,,LNL_1, L_2, \ldots, L_N이 주어집니다. 비어 있는 배열에서 시작하여 Insert(L1,1)\text{Insert}(L_1, 1), Insert(L2,2)\text{Insert}(L_2, 2), \ldots, Insert(LN,N)\text{Insert}(L_N, N)을 순서대로 수행한 후 배열의 최종 상태를 출력하세요.

입력

첫째 줄에 두 정수 NNMM이 주어집니다. NN은 Insert 연산의 개수, MM은 연산에서 사용될 수 있는 가장 큰 칸 번호입니다 (1N1310721 \le N \le 131072, 1M1310721 \le M \le 131072).

둘째 줄에 수행할 연산을 나타내는 NN개의 정수 L1,L2,,LNL_1, L_2, \ldots, L_N이 주어집니다 (1LiM1 \le L_i \le M).

출력

모든 연산을 수행한 후 배열의 내용을 출력합니다. 첫째 줄에 비어 있지 않은 칸 중 가장 큰 번호 WW를 출력합니다. 둘째 줄에 A[1],A[2],,A[W]A[1], A[2], \ldots, A[W]를 출력하며, 비어 있는 칸은 00으로 나타냅니다.