AT_past17_k 正しいチェックディジット
Description
数字と `?` からなる長さ $ N $ の文字列 $ S $ が与えられます。
全ての `?` を数字に置き換えて以下の値を $ 10 $ の倍数にすることができるか判定し、可能な場合は `?` の置き換え方を $ 1 $ 通り求めてください。
- $ \displaystyle \sum^{N}_{i=1} $ $ i $ $ \times $ ( $ S $ の $ i $ 文字目を $ 1 $ 桁の整数とみなした時の値 )
Input Format
入力は以下の形式で標準入力から与えられる。
> $ N $ $ S $
Output Format
問題文中の条件を満たす置き換え方が存在しない場合、 `No` と $ 1 $ 行に出力してください。
そうでない場合、以下の形式に従い置き換え方を出力してください。
> Yes $ T $
まず、 $ 1 $ 行目に `Yes` と出力してください。
次に、 $ 2 $ 行目に `?` を問題文中の条件を満たすように置き換えた文字列 $ T $ を出力してください。
Explanation/Hint
### Sample Explanation 1
`935?0` の $ 4 $ 文字目の `?` を置き換えることを考えます。
- $ 4 $ 文字目の `?` を $ 5 $ に置き換えた時、置き換えた後の文字列は $ T= $ `93550` となります。
- $ 1 \times 9 + 2 \times 3 + 3 \times 5 + 4 \times 5 + 5 \times 0 = 50 $ となり、これは確かに $ 10 $ の倍数です。
他にも、 $ 4 $ 文字目の `?` を $ 0 $ に置き換えた `93500` も問題文中の条件を満たします。
### Sample Explanation 2
`1?3?5` の $ 2 $ つの `?` を数字に置き換える方法は全部で $ 100 $ 通りありますが、どのように置き換えても問題文中の条件を満たすことができません。
### Sample Explanation 3
文字列 `0` は置き換えるべき `?` を含みませんが、 $ 1 \times 0 = 0 $ は元々 $ 10 $ の倍数です。
### Constraints
- $ N $ は $ 1 $ 以上 $ 2 \times 10^5 $ 以下の整数
- $ S $ は数字と `?` からなる長さ $ N $ の文字列