Key Insertion

As an employee of the Macrohard Company, you have been asked to implement the new data structure that would be used to store some integer keys.

The keys must be stored in a special ordered collection that can be considered as an array A, which has an infinite number of locations, numbered starting from 1. Initially all locations are empty. The following operation must be supported by the collection: Insert(L, K), where L is the location in the array and K is some positive integer value.

The operation must be processed as follows:

If A[L] is empty, set A[L] <- K.
If A[L] is not empty, perform Insert(L+1, A[L]) and after that set A[L] <- K.
Given N integer numbers L1, L2, ..., LN you have to output the contents of the array after a sequence of the following operations:

Insert(L1, 1)
Insert(L2, 2)
...
Insert(LN, N)

Input

The first line of the input contains N - the number of \$Insert\$ operations and M - the maximal position that can be used in the Insert operation (1 <= N <= 131,072, 1 <= M <= 131,072).

Next line contains N integer numbers Li that describe Insert operations to be performed (1 <= Li <= M).

Output

Output the contents of the array after a given sequence of Insert operations. On the first line print W - the number of the greatest location that is not empty. After that output W integer numbers - A, A, ..., A[W]. Output zeroes for empty locations.

This problem contains multiple test cases!

The first line of a multiple input is an integer N, then a blank line followed by N input blocks. Each input block is in the format indicated in the problem description. There is a blank line between input blocks.

The output format consists of N output blocks. There is a blank line between output blocks.

Sample Input

1

5 4
3 3 4 1 3

Sample Output

6
4 0 5 2 3 1

2个回答 