AT_stpc2025_2_l Avoid Multiple
Description
長さ $ N $ の正整数列 $ A=(A_1,A_2,\ldots,A_N) $ が与えられます。はじめ、 $ A $ に $ M $ の倍数が含まれていないことが保証されます。
あなたは次の操作を $ N-1 $ 回行います。
1. $ 1 \le i \le |A|-1 $ を満たす整数 $ i $ を選択する
2. $ A_i $ と $ A_{i+1} $ を足して $ 1 $ つの要素にする
- より正確には、 $ (A_1 ,\ldots,A_{i-1}),(A_{i}+A_{i+1}),(A_{i+2},\ldots,A_{|A|}) $ をこの順に連結したもので $ A $ を置き換える
- この操作により $ A $ の長さは $ 1 $ 減少する
操作の過程で $ A $ に $ M $ の倍数が現れないように $ N-1 $ 回の操作を行えるかどうか判定してください。 操作が可能な場合はそのような操作列を $ 1 $ つ構成してください。
Input Format
入力は以下の形式で与えられる。
> $ N $ $ M $ $ A_1 $ $ A_2 $ $ \cdots $ $ A_N $
Output Format
条件を満たす操作列が存在しない場合、 $ 1 $ 行目に `No` を出力せよ。
条件を満たす操作列が存在する場合、 $ 1 $ 行目に `Yes` を出力し、 $ 2 $ 行目に各操作で選択した $ i $ を順に空白区切りで出力せよ。
条件を満たす操作列が複数存在する場合、どれを出力しても正解とみなされる。
Explanation/Hint
### Sample Explanation 1
この入力例において、はじめ $ A=(1,2,3,1) $ です。
- $ 1 $ 回目の操作では $ i=2 $ を選択して $ A=(1,5,1) $ となります。
- $ 2 $ 回目の操作では $ i=1 $ を選択して $ A=(6,1) $ となります。
- $ 3 $ 回目の操作では $ i=1 $ を選択して $ A=(7) $ となります。
この操作の過程では $ A $ に $ 4 $ の倍数が現れません。
### Constraints
- 入力はすべて整数
- $ 3 \le N \le 2\times 10^5 $
- $ 2 \le M \le 10^9 $
- $ 1 \le A_i < M $
- $ A_i $ は $ M $ の倍数ではない