CF1635B Avoid Local Maximums
Description
You are given an array $ a $ of size $ n $ . Each element in this array is an integer between $ 1 $ and $ 10^9 $ .
You can perform several operations to this array. During an operation, you can replace an element in the array with any integer between $ 1 $ and $ 10^9 $ .
Output the minimum number of operations needed such that the resulting array doesn't contain any local maximums, and the resulting array after the operations.
An element $ a_i $ is a local maximum if it is strictly larger than both of its neighbors (that is, $ a_i > a_{i - 1} $ and $ a_i > a_{i + 1} $ ). Since $ a_1 $ and $ a_n $ have only one neighbor each, they will never be a local maximum.
Input Format
Each test contains multiple test cases. The first line will contain a single integer $ t $ $ (1 \leq t \leq 10000) $ — the number of test cases. Then $ t $ test cases follow.
The first line of each test case contains a single integer $ n $ $ (2 \leq n \leq 2 \cdot 10^5) $ — the size of the array $ a $ .
The second line of each test case contains $ n $ integers $ a_1, a_2, \ldots ,a_n $ $ (1 \leq a_i \leq 10^9) $ , the elements of array.
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, first output a line containing a single integer $ m $ — minimum number of operations required. Then ouput a line consist of $ n $ integers — the resulting array after the operations. Note that this array should differ in exactly $ m $ elements from the initial array.
If there are multiple answers, print any.
Explanation/Hint
In the first example, the array contains no local maximum, so we don't need to perform operations.
In the second example, we can change $ a_2 $ to $ 3 $ , then the array don't have local maximums.