#apc001g. [apc001_g]Colorful Doors

[apc001_g]Colorful Doors

题目描述

有一座连接河流左岸和右岸的桥。这座桥上放置了 2N2N 扇不同位置的门,每扇门都染有特定的颜色。门的颜色用从 11NN 的整数表示。对于每个 kk1kN1 \leq k \leq N),恰好有两扇染有颜色 kk 的门。

Snuke 决定从左岸过桥到右岸。他将一直向右走,但在此过程中会发生以下事件:

  • 当 Snuke 触摸到染有颜色 kk 的门(1kN1 \leq k \leq N)时,他会瞬间传送到染有颜色 kk 的另一扇门的右侧。

可以证明他最终会到达右岸。

对于每个 ii1i2N11 \leq i \leq 2N-1),从左边数第 ii 扇门到第 (i+1)(i+1) 扇门之间的区域称为第 ii 段。Snuke 过桥后,他记录了自己是否通过了第 ii 段的信息,其中 ii 的取值范围为 1i2N11 \leq i \leq 2N-1。这个记录以一个长度为 2N12N-1 的字符串 ss 的形式给出。对于每个 ii1i2N11 \leq i \leq 2N-1),如果 Snuke 通过了第 ii 段,则 ss 的第 ii 个字符为 1;否则,第 ii 个字符为 0

图示:样例输入 3 对应的一种门的布置

确定是否存在与记录一致的门的布置方式。如果存在,则构造一种这样的布置方式。

约束条件

  • 1N1051 \leq N \leq 10^5
  • s=2N1|s| = 2N-1
  • ss01 组成。

输入

从标准输入读入数据,数据格式如下:

NN ss

输出

如果不存在与记录一致的门的布置方式,则输出 No。如果存在这样的布置方式,则在第一行打印 Yes,然后在第二行以以下格式打印一种布置方式:

c1c_1 c2c_2 ...... c2Nc_{2N}

其中,对于每个 ii1i2N1 \leq i \leq 2N),cic_i 是从左边数第 ii 扇门的颜色。


示例输入 1

2
010

示例输出 1

Yes
1 1 2 2

示例输入 2

2
001

示例输出 2

No

示例输入 3

3
10110

示例输出 3

Yes
1 3 2 1 2 3

下图与题目描述中的图相同。


示例输入 4

3
10101

示例输出 4

No

示例输入 5

6
00111011100

示例输出 5

Yes
1 6 1 2 3 4 4 2 3 5 6 5