AT_oupc2023_day1_p Score for Cutting Graph

Description

各頂点に正整数が書かれた無向グラフ $ G' $ に対するスコアを以下で定義します。 - $ G' $ のすべての連結成分に対して、各連結成分に含まれる頂点に書かれた正整数の総積を求め、その和をスコアとする。 正整数からなる長さ $ N $ の数列 $ A = (A_1, A_2, \ldots, A_N) $ と正整数 $ M $ が与えられます。頂点に $ 1 $ から $ N $ の番号が付けられた $ N $ 頂点 $ N - 1 $ 辺の単純連結無向グラフ $ G $ であって、以下の条件を満たすものが存在するかどうかを判定し、存在するのであれば辺の作成方法を教えてください。 - $ G $ の頂点 $ i $ ( $ 1 \leq i \leq N $ ) には $ A_i $ が書かれている。 - $ G $ から $ 1 $ 本以下の辺を削除して得られる $ N $ 個のグラフに対するスコアの総和が $ M $ 以下となる。 $ T $ 個のテストケースが与えられるので、それぞれについて答えを求めてください。

Input Format

入力は以下の形式で標準入力から与えられます。 > $ T $ $ \mathrm{case}_1 $ $ \vdots $ $ \mathrm{case}_T $ 各テストケースは以下の形式で与えられます。 > $ N $ $ M $ $ A_1 $ $ A_2 $ $ \ldots $ $ A_N $

Output Format

$ k $ 番目に $ \mathrm{case}_k $ の答えを出力してください。 スコアの総和を $ M $ 以下にすることが不可能である場合は `No` と出力してください。 可能である場合は $ 1 $ 行目に `Yes` と出力し、 $ 2 $ 行目以降に $ G $ の辺の作成方法を以下の形式に従って $ N-1 $ 行出力してください。 > $ s_1 $ $ t_1 $ $ s_2 $ $ t_2 $ $ \vdots $ $ s_{N-1} $ $ t_{N-1} $ $ s_j, t_j $ は $ G $ の辺を表します。これは頂点 $ s_j $ と頂点 $ t_j $ を結ぶ辺であることを示します。 答えが複数存在する場合、どれを出力しても正解となります。

Explanation/Hint

### 小課題 1. ( $ 1 $ 点) $ N \leq 7 $ 2. ( $ 99 $ 点) 追加の制約はない ### Sample Explanation 1 $ 1 $ つ目のテストケースとその出力例について、例えば以下のような場合が考えられます。 - どの辺も削除されない場合、スコアは $ (1 \times 2 \times 3 \times 4) = 24 $ - $ 1 $ 番目の辺が削除される場合、スコアは $ (2) + (1 \times 3 \times 4) = 14 $ - $ 2 $ 番目の辺が削除される場合、スコアは $ (3) + (1 \times 2 \times 4) = 11 $ - $ 3 $ 番目の辺が削除される場合、スコアは $ (4) + (1 \times 2 \times 3) = 10 $ スコアの総和は $ 59 $ となります。 他にもスコアの総和が $ 60 $ 以下となる $ G $ はありますが、そのどれを出力しても正解となります。 $ 2 $ つ目のテストケースについて、スコアの総和が $ 24 $ 以下になるような $ G $ は存在しないため、`No` を出力します。 このケースは小課題 $ 1 $ の制約を満たします。 ### Sample Explanation 2 このケースは小課題 $ 1 $ の制約を満たしません。 ### Constraints - $ 1 \leq T \leq 5 $ - $ 2 \leq N \leq 200{,}000 $ - $ 1 \leq M \leq 10^{18} $ - $ 1 \leq A_i \leq 10^{18} $ - $ 1 $ つの入力に含まれるテストケースについて、 $ N $ の総和は $ 200{,}000 $ 以下 - 入力はすべて整数