/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
public static int calMEX(int[] copy){
HashSet<Integer> st = new HashSet<>();
for(int i : copy) st.add(i);
for(int i = 0; i < copy.length; i++){
if(!st.contains(i)) return i;
}
return copy.length;
}
public static int[] maximumMEX(int[] nums) {
int[] copy = nums.clone();
int n = nums.length;
ArrayList<Integer> ls = new ArrayList<>();
int i = 0;
while(i < n){
int totMEX = calMEX(copy);
Set<Integer> seen = new HashSet<>();
int currMEX = 0;
for(int j = i; j < n; j++){
seen.add(nums[j]);
while(seen.contains(currMEX)){
currMEX++;
}
if(currMEX == totMEX){
ls.add(totMEX);
copy
= Arrays.
copyOfRange(nums, j
+ 1, n
); i = j + 1;
break;
}
}
}
int[] ans = new int[ls.size()];
for(int k = 0; k < ls.size(); k++){
ans[k] = ls.get(k);
}
return ans;
}
{
// your code goes here
int[] nums = {0,1,0};
int[] temp = maximumMEX(nums);
for(int i : temp){
}
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKCXB1YmxpYyBzdGF0aWMgaW50IGNhbE1FWChpbnRbXSBjb3B5KXsKICAgICAgICBIYXNoU2V0PEludGVnZXI+IHN0ID0gbmV3IEhhc2hTZXQ8PigpOwogICAgICAgIGZvcihpbnQgaSA6IGNvcHkpIHN0LmFkZChpKTsKCiAgICAgICAgZm9yKGludCBpID0gMDsgaSA8IGNvcHkubGVuZ3RoOyBpKyspewogICAgICAgICAgICBpZighc3QuY29udGFpbnMoaSkpIHJldHVybiBpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gY29weS5sZW5ndGg7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBpbnRbXSBtYXhpbXVtTUVYKGludFtdIG51bXMpIHsKICAgICAgICBpbnRbXSBjb3B5ID0gbnVtcy5jbG9uZSgpOwogICAgICAgIGludCBuID0gbnVtcy5sZW5ndGg7CiAgICAgICAgQXJyYXlMaXN0PEludGVnZXI+IGxzID0gbmV3IEFycmF5TGlzdDw+KCk7CiAgICAgICAgaW50IGkgPSAwOwoKICAgICAgICB3aGlsZShpIDwgbil7CiAgICAgICAgICAgIGludCB0b3RNRVggPSBjYWxNRVgoY29weSk7CiAgICAgICAgICAgIFNldDxJbnRlZ2VyPiBzZWVuID0gbmV3IEhhc2hTZXQ8PigpOwogICAgICAgICAgICBpbnQgY3Vyck1FWCA9IDA7CiAgICAgICAgICAgIGZvcihpbnQgaiA9IGk7IGogPCBuOyBqKyspewogICAgICAgICAgICAgICAgc2Vlbi5hZGQobnVtc1tqXSk7CiAgICAgICAgICAgICAgICB3aGlsZShzZWVuLmNvbnRhaW5zKGN1cnJNRVgpKXsKICAgICAgICAgICAgICAgICAgICBjdXJyTUVYKys7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZihjdXJyTUVYID09IHRvdE1FWCl7CiAgICAgICAgICAgICAgICAgICAgbHMuYWRkKHRvdE1FWCk7CiAgICAgICAgICAgICAgICAgICAgY29weSA9IEFycmF5cy5jb3B5T2ZSYW5nZShudW1zLCBqICsgMSwgbik7CiAgICAgICAgICAgICAgICAgICAgaSA9IGogKyAxOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGludFtdIGFucyA9IG5ldyBpbnRbbHMuc2l6ZSgpXTsKICAgICAgICBmb3IoaW50IGsgPSAwOyBrIDwgbHMuc2l6ZSgpOyBrKyspewogICAgICAgICAgICBhbnNba10gPSBscy5nZXQoayk7CiAgICAgICAgfQogICAgICAgIHJldHVybiBhbnM7CiAgICB9CiAgICAKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbgoJewoJCS8vIHlvdXIgY29kZSBnb2VzIGhlcmUKCQlpbnRbXSBudW1zID0gezAsMSwwfTsKCQkgaW50W10gdGVtcCA9IG1heGltdW1NRVgobnVtcyk7CgkJIGZvcihpbnQgaSA6IHRlbXApewoJCSAJU3lzdGVtLm91dC5wcmludGxuKGkpOwoJCSB9Cgl9Cn0=