#P17057. [SGU279] Bipermutations

[SGU279] Bipermutations

题目描述

一个 nn 阶二重排列是对 2n2n 个对象 1,1,2,2,,n,n1,1',2,2',\ldots,n,n' 的线性排列,并满足:

  1. 对每个 1in1\le i\le n,对象 ii' 出现在对象 ii 之前;
  2. 所有带撇对象的相对顺序与所有不带撇对象的相对顺序相同。也就是说,对任意 i,ji,jii'jj' 前面当且仅当 iijj 前面。

iji\ne j,定义对象

  • j<ij<i,则 bij=jb_{ij}=j'
  • j>ij>i,则 bij=jb_{ij}=j

biib_{ii} 不定义。令 a(i)a(i) 为满足“对象 ii 出现在对象 bijb_{ij} 之前”的 jj 的数量。

给定整数 a1,a2,,ana_1,a_2,\ldots,a_n,请构造任意一个满足 a(i)=aia(i)=a_i 的二重排列;若不存在,则报告无解。

输入格式

第一行包含一个整数 nn。第二行包含 nn 个整数 a1,a2,,ana_1,a_2,\ldots,a_n

输出格式

若无解,只输出一行 NO

若有解,第一行输出 YES,随后输出二重排列中的 2n2n 个对象。对象 ii 输出为正整数 i,对象 ii' 输出为负整数 -i。数字之间用空格分隔,换行位置不限。

数据范围

  • 1n10001\le n\le1000
  • 对任何合法解必有 0ain10\le a_i\le n-1
  • 时间限制:0.250.25
  • 内存限制:6464 MiB

样例

输入

9
2 0 3 0 4 8 1 5 4

输出

YES
-6 -8 -9 6 -5 -3 8 9 -7 5 -1 -4 3 7 -2 1 4 2

满足条件的二重排列可能不唯一,可以输出任意一个。