AT_abc382_d [ABC382D] Keep Distance

Description

[problemUrl]: https://atcoder.jp/contests/abc382/tasks/abc382_d 整数 $ N $ と $ M $ が与えられます。 以下の条件をすべて満たす長さ $ N $ の整数列 $ (A_1,\ A_2,\ \ldots,\ A_N) $ を辞書順にすべて出力してください。 - $ 1\ \leq\ A_i $ - $ 2 $ 以上 $ N $ 以下の各整数 $ i $ に対して $ A_{i\ -\ 1}\ +\ 10\ \leq\ A_i $ - $ A_N\ \leq\ M $ 数列の辞書順とは長さ $ N $ の数列 $ S\ =\ (S_1,\ S_2,\ \ldots,\ S_N) $ が長さ $ N $ の数列 $ T\ =\ (T_1,\ T_2,\ \ldots,\ T_N) $ より**辞書順で小さい**とは、ある整数 $ 1\ \leq\ i\ \leq\ N $ が存在して下記の $ 2 $ つがともに成り立つことをいいます。 - $ (S_1,\ S_2,\ \ldots,\ S_{i-1})\ =\ (T_1,\ T_2,\ \ldots,\ T_{i-1}) $ - $ S_i $ が $ T_i $ より(数として)小さい。

Input Format

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

Output Format

条件を満たす長さ $ N $ の整数列の個数を $ X $ として $ X\ +\ 1 $ 行出力せよ。 $ 1 $ 行目には $ X $ の値を出力せよ。 $ i\ +\ 1 $ ($ 1\ \leq\ i\ \leq\ X $) 行目には条件を満たす整数列のうち辞書順で $ i $ 番目に小さいものを空白区切りで出力せよ。

Explanation/Hint

### 制約 - $ 2\ \leq\ N\ \leq\ 12 $ - $ 10N\ -\ 9\ \leq\ M\ \leq\ 10N $ - 入力される値はすべて整数 ### Sample Explanation 1 $ (1,\ 11,\ 21),\ (1,\ 11,\ 22),\ (1,\ 11,\ 23),\ (1,\ 12,\ 22),\ (1,\ 12,\ 23),\ (1,\ 13,\ 23),\ (2,\ 12,\ 22),\ (2,\ 12,\ 23),\ (2,\ 13,\ 23),\ (3,\ 13,\ 23) $ の $ 10 $ 個の数列が条件を満たします。