#P15786. 彩门桥的通行记录

彩门桥的通行记录

  • 来源:Petrozavodsk Winter Training Camp 2018,Day 3: AtCoder Contest,Problem B
  • 原题名:Colorful Doors
  • 时间限制:2 秒
  • 空间限制:256 MiB

题目描述

Snuke 要穿过一座连接河流左右两岸的桥。桥上从左到右放着 2N2N 扇门,每扇门被涂成某种颜色。颜色用 11NN 的整数表示,并且每种颜色恰好出现两次。

Snuke 从左岸出发,始终朝右岸方向前进。不过,当他碰到某种颜色 kk 的门时,会立刻传送到另一扇颜色同为 kk 的门的右侧,然后继续向右走。

可以证明,无论门如何排列,Snuke 最终都会到达右岸。

对于 1i2N11\le i\le 2N-1,称从左数第 ii 扇门和第 i+1i+1 扇门之间的区域为第 ii 段。

Snuke 过桥后记录了自己是否走过每一段。这个记录用一个长度为 2N12N-1 的字符串 ss 表示:

  • 若 Snuke 走过第 ii 段,则 si=1s_i=1
  • 否则 si=0s_i=0

现在给定记录 ss。请判断是否存在一种 2N2N 扇门的颜色排列,使得 Snuke 的实际通行记录恰好为 ss。如果存在,请构造任意一种这样的排列。

输入格式

输入包含两行。

第一行包含一个整数 NN

第二行包含一个长度为 2N12N-1 的字符串 ss,只由字符 01 组成。

输出格式

如果不存在合法排列,输出一行:

No

如果存在合法排列,第一行输出:

Yes

第二行输出 2N2N 个整数

c1,c2,,c2N,c_1,c_2,\ldots,c_{2N},

其中 cic_i 表示从左往右第 ii 扇门的颜色。

必须满足对于每个 1kN1\le k\le N,颜色 kk 恰好出现两次。

数据范围

  • 1N1051\le N\le 10^5
  • s=2N1|s|=2N-1
  • ss 只包含字符 01

样例 1

输入

2
010

输出

Yes
1 1 2 2

样例 2

输入

2
001

输出

No

样例 3

输入

3
10110

输出

Yes
1 3 2 1 2 3

样例 4

输入

3
10101

输出

No

样例 5

输入

6
00111011100

输出

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