AT_ijpc2015_c しりとり木

Description

[problemUrl]: https://atcoder.jp/contests/ijpc2015/tasks/ijpc2015_c 半角英小文字からなる文字列が$ m $個与えられる。 文字列1つにつき1つ、計$ m $個の頂点からなる根付き木であって、 - 葉以外の頂点はちょうど2つの子を持つ - 頂点$ i $が頂点$ c $の親のとき、$ i $番目の文字列の最後の文字が$ c $ 番目の文字列の最初の文字に一致する が成立するような木が存在するか判定せよ。 存在するときは構成せよ 13:35 問題文の誤字を修正 **申し訳ありませんが、B問題のテストケースに間違いがあったため、テストケースを16:30より追加します。(16:10)**

Input Format

入力は以下の形式で標準入力から与えられる。 > $ N $ $ s_1 $ . . . $ s_N $ - 一行目には文字列の数 $ N(1≦N≦10^4) $ が与えられる。 - 続く $ N $ 行には、文字列が与えられる。$ i+1\ (1≦i≦N) $ 行目には$ i $ 番目の文字列が与えられる。 - それぞれの文字列の長さは1文字以上10文字以下である。

Output Format

出力は標準出力に行い、末尾に改行を入れること。 条件を満たす木が存在しない場合、1行目に"NO"と出力する。 条件を満たす木が存在する場合、出力は$ N+1 $ 行からなる。 1行目に"YES"と出力し、その後$ i+1\ (1≦i≦N) $行目にi番目の文字列の親の番号を出力する。もしi番目の文字列が根なら0を出力する。

Explanation/Hint

### 部分点 この問題に部分点は存在しない。 **コンテストへの影響を鑑みて、従来のテストケースに99点、全てのテストケースに1点とします。(16:32)** ### Sample Explanation 2 \### 入力例$ 3 $ ``` 1 i ``` ### 出力例$ 3 $ ``` YES 0 ```