NAND Oracle

作成者 loop0919

難易度(作成者設定) Lv.4

実行時間制限
2 秒
メモリ制限
512 MiB

問題文

ループさんは 00 または 11 からなる長さ 22 の数列 A=(A1,A2)A = (A_1, A_2) を隠し持っています。この AA は入力から与えられないことに注意してください。
あなたは AA に対し、以下の操作をちょうど QQ 回繰り返します。ここで、 nn は各操作の直前における AA の長さを表します。

  • 1i<jn1 \le i \lt j \le n を満たす整数対 (i,j)(i, j) を選ぶ。 AA の末尾に Ai  AjA_i ~ \overline{\land} ~ A_j を挿入する。

ここで否定論理積 \overline{\land} は、以下を満たす二項演算であると定義します。

  • 0  0=0  1=1  0=10 ~ \overline{\land} ~ 0 = 0 ~ \overline{\land} ~ 1 = 1 ~ \overline{\land} ~ 0 = 1
  • 1  1=01 ~ \overline{\land} ~ 1 = 0

ループさんの隠し持っている AA がいかなるものであっても、操作後の AA の総和が KK 以下となるような操作列が存在するか判定してください。
存在するとき、このような操作列を一つ提示してください。

制約

  • 1Q2×1051 \le Q \le 2 \times 10^5
  • 2KQ+22 \le K \le Q + 2
  • 入力される値はすべて整数

入力

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

QKQ \quad K

出力

条件を満たす操作列が存在するときは Yes 、そうでないとき No を出力せよ。
さらに Yes であった場合、改行した後に以下の形式で操作列を出力せよ。

i1j1i_1 \quad j_1 i2j2i_2 \quad j_2 \vdots iQjQi_Q \quad j_Q

ここで、 ik,jki_k, j_kkk 回目 (1kQ)(1 \le k \le Q) の操作で選ぶ i,ji, j を表す。

正答が複数存在する場合、そのいずれを出力しても正解と判定される。

入出力例 1

入力例 1

3 3

出力例 1

Yes
1 2
2 3
1 4

入出力例 2

入力例 2

4 2

出力例 2

No

入出力例 3

入力例 3

9 6

出力例 3

Yes
1 2
1 2
1 2
1 2
3 4
3 5
3 6
4 5
7 8

スペシャルジャッジ問題:提出の出力を検証コードで判定します。