#abc425b. 寻找排列2

寻找排列2

题目描述

给定一个长度为 NN 的整数序列 A=(A1,A2,,AN)A = (A_1, A_2, \ldots, A_N),其中 AA 的每个元素要么是 1-1,要么是 11NN 之间(包含端点)的整数。

请判断是否存在一个长度为 NN 的整数序列 P=(P1,P2,,PN)P = (P_1, P_2, \ldots, P_N) 满足以下所有条件。若存在,输出其中一个合法序列;若不存在,输出 No

条件

  1. PP(1,2,,N)(1, 2, \ldots, N) 的一个排列(即包含 1 到 N 的所有整数,且每个整数仅出现一次)。

  2. 对于 i=1,2,,Ni = 1, 2, \ldots, N,若 Ai1A_i \neq -1,则必须满足 Pi=AiP_i = A_i

约束条件

  • 1N101 \le N \le 10

  • 每个 AiA_i 要么是 1-1,要么是 1AiN1 \le A_i \le N 的整数

  • 输入的所有值均为整数

输入格式

输入从标准输入按以下格式给出:

N

A_1 A_2 … A_N

输出格式

  • 若不存在满足所有条件的 PP,输出 No

  • 若存在,按以下格式输出:

Yes

P_1 P_2 … P_N
  • 若存在多个合法的 PP,输出字典序最小的排列。

样例输入与输出

样例输入 1

4

-1 -1 2 -1

样例输出 1

Yes

1, 3, 2, 4

说明P=(3,1,2,4)P = (3, 1, 2, 4) 或者P=(1,3,2,4)P = (1, 3, 2, 4)P=(4,3,2,1)P = (4, 3, 2, 1) 等均为合法序列,其中字典序最小的是P=(1,3,2,4)P = (1, 3, 2, 4)

样例输入 2

5

-1 -1 1 -1 1

样例输出 2

No

说明:不存在满足所有条件的 PP(因序列 AA 中出现了两个 11,而 PP 作为排列无法包含重复元素)。

样例输入 3

7

3 -1 4 -1 5 -1 2

样例输出 3

Yes

3 1 4 6 5 7 2