#727. 打工人Xiaomo -1

打工人Xiaomo -1

题目描述

XiaomoXiaomo是个勤奋的打工人,OnedayOne day,工头SylSyl要求他在一片废弃的砖堆垒中成一个上升阶梯(要求你只能加转,不能减砖),废弃的砖堆从侧面看可以看成

是一条长度为 nn 的 数组XX,而XXii就是砖堆在位置 ii 处的高度,上升阶梯需要满足XXii ≤ XXi+1i+1 ( 1in1 ≤ i< n )

XiaomoXiaomo准备了充足的砖块,但是搬砖机被嫉妒XiaomoXiaomo魅力的队友们藏了起来,直接导致XiaomoXiaomo效率大减。 XiaomoXiaomo作为小南工最强打工人就算是徒手搬

砖也要完成工头SylSyl的任务。

已知XiaomoXiaomo徒手搬砖平均速度是一秒钟加一块砖头。即1秒钟可以选择任意一个数 ii ( 1in1 ≤ i ≤ n ),使XXii + 1;

XiaomoXiaomo想尽快完成任务下班,请问XiaomoXiaomo最少需要多少秒钟才可以完成任务?

输入格式

第一行输入一个整数 nn(( 1n1e51 ≤ n ≤ 1e5 )),表示砖堆的长度;

第二行有 nn 个整数,第 ii 个数 XX ii代表砖堆i处的高度. (11 ≤ XXii 1e7≤ 1e7 )

输出格式

第一行输出一个整数ansans,表示XiaomoXiaomo最少需要多少秒钟完成任务.

第二行输出 nn

第三行紧接着输出 nn 个整数,第 ii 个数表示 XiaomoXiaomo 完成任务后 砖堆i处的高度.

样例

输入

7
4 2 7 6 9 3 10

输出

9
7
4 4 7 7 9 9 10

数据范围与提示

1n1e51 ≤ n ≤ 1e5

1 1 ≤ XXii 1e7≤ 1e7