P24728 [AtCoder] Palindrome Construction
提高+
题目描述

Problem Statement

A sequence of positive integers $T=(T_1,T_2,\dots,T_M)$ of length M is a palindrome if and only if T_i=T_{M-i+1} for each $i=1,2,\dots,M$.
You are given a sequence of $non-negative integers A = (A_1,A_2,\dots,A_N)$ of length N. Determine if there is a sequence of positive integers $S=(S_1,S_2,\dots,S_N)$ of length N that satisfies the following condition, and if it exists, find the lexicographically smallest such sequence.

  • For each $i=1,2,\dots,N,$ both of the following hold:
  • The sequence $(S_{i-A_i},S_{i-A_i+1},\dots,S_{i+A_i})$ is a palindrome.
  • If $2 \leq i-A_i$ and $i+A_i \leq N-1$, the sequence $(S_{i-A_i-1},S_{i-A_i},\dots,S_{i+A_i+1})$ is not a palindrome.

Input

The input is given from Standard Input in the following format:
N
$A_1 A_2 \dots A_N$

Output

If there is no sequence S that satisfies the condition, print No.
If there is a sequence S that satisfies the condition, let S' be the lexicographically smallest such sequence and print it in the following format:
Yes
S'_1 S'$_2 \dots S$'_N

Constraints

  • $1 \leq N \leq 2 \times 10^5$
  • $0 \leq A_i \leq \min${i-1,N-i}
  • All input values are integers.

Sample Input 1

7
0 0 2 0 2 0 0

Sample Output 1

Yes
1 1 2 1 1 1 2

S = (1,1,2,1,1,1,2) satisfies the condition:

  • i=1: (A_1)=(1) is a palindrome.
  • i=2: (A_2)=(1) is a palindrome, but (A_1,A_2,A_3)=(1,1,2) is not.
  • i=3: $(A_1,A_2,\dots,A_5)=(1,1,2,1,1)$ is a palindrome.
  • i=4: (A_4)=(1) is a palindrome, but (A_3,A_4,A_5)=(2,1,1) is not.
  • i=5: $(A_3,A_4,\dots,A_7)=(2,1,1,1,2)$ is a palindrome.
  • i=6: (A_6)=(1) is a palindrome, but (A_5,A_6,A_7)=(1,1,2) is not.
  • i=7: (A_7)=(2) is a palindrome.

There are other sequences like S=(2,2,1,2,2,2,1) that satisfy the condition, but print the lexicographically smallest one, which is (1,1,2,1,1,1,2).

Sample Input 2

7
0 1 2 3 2 1 0

Sample Output 2

Yes
1 1 1 1 1 1 1

Sample Input 3

7
0 1 2 0 2 1 0

Sample Output 3

No

输入格式

见题面 Input 部分

输出格式

见题面 Output 部分

样例输入
7 0 0 2 0 2 0 0
样例输出
Yes 1 1 2 1 1 1 2