题目描述
对于一个长度为n,且下标从1开始编号的序列a,我们定义它是「合法的」,当且仅当它满足以下条件:
a1=1
对于i∈[1,n),ai≤ai+1≤ai+1且ai+为正整数;
对于任意在a中出现过的数v,记它的出现次数为s,则2≤s≤5。
给定一个长度为n的序列a,其中有一些位置为0,你需要在这些位置上任意填数,使得a成为一个合法的序列,并且最大化an的值。
输入格式
第一行一个数 n,表示序列的长度。
第二行 n个整数,第 i个整数表示 ai,如果 ai=0,则表示这个位置没有填数。
输出格式
如果不存在合法的填数方案,则输出 ?1; 否则第一行输出一个整数,表示最大的 an;
第二行 n个正整数,第 i个数表示完 成填数后的序列的第 i个元素。
如果有多组合法的解,输出任意一组
样例
输入样例1
7
0 1 0 0 0 3 0
输出样例1
3
1 1 2 2 3 3 3
输入样例2
4
0 0 0 3
输出样例2
-1
提示
数据范围
对于 30%的数据,n≤ 1000;
对于另外 30%的数据,数据保证随机生成;
对于 100%的数据,2≤ n≤ 2× 105,0≤ ai≤ 105。