atcoder#APC001G. Colorful Doors

Colorful Doors

配点 : 20002000

問題文

左岸と右岸を繋ぐ橋があります。 橋の上の相異なる 2N2 N 箇所には、それぞれある色のドアが置かれています。 各ドアの色は 11 から NN までの整数で表されます。 各 kk (1kN1 \leq k \leq N) について、色 kk のドアはちょうど 22 個存在します。

すぬけ君は、左岸から右岸へ橋を渡ることにしました。 すぬけ君は常に右へ向かって歩き続けますが、その間に次の現象が起こります。

  • すぬけ君が色 kk (1kN1 \leq k \leq N) のドアに触れた瞬間、すぬけ君は色 kk の他方のドアのすぐ右へワープする。

すぬけ君はいずれ右岸に辿り着くことが示せます。

ii (1i2N11 \leq i \leq 2 N - 1) について、左から ii 番目および i+1i + 1 番目のドアに挟まれた区間を、区間 ii と呼ぶことにします。 橋を渡り終えたすぬけ君は、各 ii (1i2N11 \leq i \leq 2 N - 1) について、区間 ii を歩いたか否かを記録しました。 この記録が、長さ 2N12 N - 1 の文字列 ss として与えられます。 各 ii (1i2N11 \leq i \leq 2 N - 1) について、すぬけ君が区間 ii を歩いたならば、ssii 文字目は 1 であり、そうでないならば、ssii 文字目は 0 です。

図: 入力例 3 に対応するドアの配置の例

記録に矛盾しないようなドアの配置が存在するか判定し、存在するならばひとつ構成してください。

制約

  • 1N1051 \leq N \leq 10^5
  • s=2N1|s| = 2 N - 1
  • ss01 のみからなる。

入力

入力は以下の形式で標準入力から与えられる。

NN

ss

出力

記録に矛盾しないようなドアの配置が存在しないならば、No を出力せよ。 存在するならば、11 行目に Yes を出力し、22 行目にドアの配置をひとつ次のフォーマットで出力せよ。 ただし、各 ii (1i2N1 \leq i \leq 2 N) について、cic_i は左から ii 番目のドアの色である。

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

2
010
Yes
1 1 2 2
2
001
No
3
10110
Yes
1 3 2 1 2 3

以下の図は問題文中のものと同様です。

3
10101
No
6
00111011100
Yes
1 6 1 2 3 4 4 2 3 5 6 5