AT_scpc2026_div3_j ChannelTalk Workflow

Description

#### 表示言語 / / > 顧客とのリアルタイムなコミュニケーションを便利にするオールインワン AI メッセンジャー ChannelTalk は,誰でも簡単にチャットボットを作れるようにワークフロー機能を提供している.ChannelTalk Workflow を利用すると,顧客や状況に応じて必要なトリガーとアクションをブロックのように組み合わせ,相談の開始から終了までの全過程を自動化できる.また,繰り返し必要な機能はモジュールとして作り,何度も再利用できる. イノは ChannelTalk Workflow を利用して, $ N $ 種類の互いに異なる質問を処理するチャットボットを作ろうとしている.各質問には $ 1 $ 番から $ N $ 番までの互いに異なる番号が付いている. イノはワークフローに $ M $ 個のモジュールを追加し,追加した順に $ 0 $ 番から $ M-1 $ 番までの番号を付けたいと考えている.イノはあまり多くのモジュールを管理する能力がないため,最大 $ 2\,048 $ 個のモジュールしか使用できない. $ i $ 番モジュールは $ x $ 番質問が入力されたとき次のように動作する. - $ x = i $ の場合,その質問に回答した後,相談を終了する. - $ x \neq i $ の場合, $ x \le F_i $ なら $ L_i $ 番モジュールに, $ x \gt F_i $ なら $ G_i $ 番モジュールに $ x $ 番質問を入力する. 質問が入力されると,最初に $ 0 $ 番モジュールに入力され,各モジュールの実行には $ 1 $ 秒かかる.すなわち, $ i $ 番の質問を処理するのにかかる時間は, $ 0 $ 番モジュールと $ i $ 番モジュールを含め,相談が終了するまでに通過したモジュールの総数に等しい.同じモジュールを複数回通過した場合は,通過した回数だけ重複して数える. イノは, $ 1 $ 番から $ N $ 番までのどの質問が来ても,相談が **正確に** $ K $ 秒で終了するようにしたい.質問の種類 $ N $ と終了時間 $ K $ が与えられるので,モジュールの数 $ M $ と各モジュールの $ F_i $ , $ L_i $ , $ G_i $ を適切に定め, $ 2\,048 $ 個以下のモジュールで常に正確に $ K $ 秒で相談が終わるようにしよう. **$ M $ を最小化する必要はない.**

Input Format

入力は以下の形式で標準入力から与えられる. > $ N $ $ K $

Output Format

1行目に使用するモジュール数 $ M $ を出力する. $ (1 \le M \le 2\,048) $ 2行目から $ M $ 行にわたり, $ i+2 $ 行目に $ i $ 番モジュールを表す $ 3 $ つの整数 $ F_i $ , $ L_i $ , $ G_i $ を空白区切りで出力する. $ (0 \le F_i \le N;\ 0 \le L_i, G_i < M) $ 可能な方法が存在しない場合は,代わりに `-1` を出力する.

Explanation/Hint

### Constraints - $ 2 \le K \le N \le 1\,000 $ - 入力される数値はすべて整数