将 $\{a, b, c, \dots\}$(前 $n$ 个小写英文字母)中所有大小不超过 $k$ 的非空子集分配到尽可能少的组中,需满足以下条件:
- 每个子集必须恰好属于一个组;
- 属于同一组的子集必须没有公共元素;
- 属于同一组的子集的总大小必须不超过 $k$。
输入格式
仅一行,包含两个整数 $n$ 和 $k$ ($1 \le k \le n \le 17$)。
输出格式
输出最少的组数 $g$,随后输出 $g$ 个组的描述。 第 $i$ 个组的描述必须包含一个整数 $s_i$,随后是 $s_i$ 个子集的描述。每个子集的描述必须是一个包含子集元素的字符串,元素顺序不限,且不含空格。
样例
输入 1
3 2
输出 1
5 1 ab 1 ac 1 bc 1 b 2 c a
输入 2
3 3
输出 2
4 1 abc 2 ab c 2 ac b 2 bc a