Meximum Array
Contest: Codeforces Round 767 (Div. 1)
Difficulty rating: 1400
Tags: binary search, constructive algorithms, greedy, implementation, math, two pointers

Mihai has just learned about the MEX concept and since he liked it so much, he decided to use it right away.

Given an array $$$a$$$ of $$$n$$$ non-negative integers, Mihai wants to create a new array $$$b$$$ that is formed in the following way:

While $$$a$$$ is not empty:

- Choose an integer $$$k$$$ ($$$1 \leq k \leq |a|$$$).
- Append the MEX of the first $$$k$$$ numbers of the array $$$a$$$ to the end of array $$$b$$$ and erase them from the array $$$a$$$, shifting the positions of the remaining numbers in $$$a$$$.

But, since Mihai loves big arrays as much as the MEX concept, he wants the new array $$$b$$$ to be the lexicographically maximum. So, Mihai asks you to tell him what the maximum array $$$b$$$ that can be created by constructing the array optimally is.

An array $$$x$$$ is lexicographically greater than an array $$$y$$$ if in the first position where $$$x$$$ and $$$y$$$ differ $$$x_i > y_i$$$ or if $$$|x| > |y|$$$ and $$$y$$$ is a prefix of $$$x$$$ (where $$$|x|$$$ denotes the size of the array $$$x$$$).

The MEX of a set of non-negative integers is the minimal non-negative integer such that it is not in the set. For example, MEX({$$${1, 2, 3}$$$}) $$$= 0$$$ and MEX({$$${0, 1, 2, 4, 5}$$$}) $$$= 3$$$.

Input format:
The first line of the input contains a single integer $$$t$$$ ($$$1 \le t \le 100$$$) — the number of test cases. The description of test cases follows.

The first line of each test case contains a single integer $$$n$$$ ($$$1 \leq n \leq 2 \cdot 10^5$$$) — the number of elements in the array $$$a$$$.

The second line of each test case contains $$$n$$$ non-negative integers $$$a_1, \ldots, a_n$$$ ($$$0 \leq a_i \leq n$$$), where $$$a_i$$$ is the $$$i$$$-th integer from the array $$$a$$$.

It is guaranteed that the sum of $$$n$$$ over all test cases does not exceed $$$2 \cdot 10^5$$$.

Output format:
For each test case print $$$m$$$ — the length of the maximum array $$$b$$$ Mihai can create, followed by $$$m$$$ integers denoting the elements of the array $$$b$$$.

Constraints:
Time limit: 2.0 s
Memory limit: 256.0 MB

Note:
In the first test case, the lexicographically maximum array $$$b$$$ is obtained by selecting $$$k=5$$$, resulting in the $$$MEX$$$ of the whole array $$$a$$$. It is lexicographically maximum because an array starting with a smaller number than $$$4$$$ is lexicographically smaller, and choosing a $$$k<5$$$ would result in an array starting with a number smaller than $$$4$$$.

In the second test case, there are two ways to obtain the maximum array: first selecting $$$k=6$$$, then $$$k=2$$$, or first selecting $$$k=7$$$ and then $$$k=1$$$.

Example input:
6
5
1 0 2 0 3
8
2 2 3 4 0 1 2 0
1
1
5
0 1 2 3 4
4
0 1 1 0
10
0 0 2 1 1 1 0 0 1 1

Example output:
1
4 
2
5 1 
1
0 
1
5 
2
2 2 
4
3 2 2 0

Editorial:
The splitting points can be picked greedily. Firstly, find the MEX of all suffixes, this can be easily done in $$$O(n \cdot log(n))$$$ or $$$O(n)$$$. Instead of removing elements, we consider that we need to split the array into some number of subarrays.
Let $$$p$$$ be the index we are currently at and MEX($$$l, r$$$) — the MEX of the set formed from the numbers $$$[a_l, a_{l+1}, ..., a_r]$$$.
Start the process by looking at the first element, so $$$p = 1$$$ initially. Then do the following process as long as $$$p \leq n$$$: find the first position $$$j (p \leq j \leq n)$$$ such that MEX($$$p, j$$$) $$$=$$$ MEX($$$p, n$$$), add this MEX to the array $$$b$$$ and do the same process starting from position $$$j + 1$$$, so $$$p = j + 1$$$.
This process always produces the optimal answer because if for each element in $$$b$$$ we choose to remove the minimum amount of elements from $$$a$$$ to obtain the maximum element $$$b_i$$$, so we have more elements in the future to do the same optimal choices.
Complexity: $$$O(n \cdot log(n))$$$ or $$$O(n)$$$ depending on implementation.