Debbie、Debby、Debra 和 Deborah 准备一起玩一个弹珠游戏。Debbie 带来了 $2^{d_1}$ 个弹珠,Debby 带来了 $2^{d_2}$ 个弹珠,Debra 带来了 $2^{d_3}$ 个弹珠,而 Deborah 带来了 $2^{d_4}$ 个弹珠。孩子们将他们的弹珠汇集成一个包含 $2^{d_1} + 2^{d_2} + 2^{d_3} + 2^{d_4}$ 个弹珠的堆,游戏随即开始。
游戏由若干回合组成。每一回合包含两个步骤: 孩子们选择任意一个包含多于一个弹珠的堆,并将其分成两个非空的堆。也就是说,如果选中的堆包含 $m \ge 2$ 个弹珠,那么新的两个堆必须分别包含 $m_1$ 和 $m_2$ 个弹珠,其中 $m_1$ 和 $m_2$ 为正整数,且 $m_1 + m_2 = m$。 如果存在多个包含相同数量弹珠的堆,则只保留其中一个,其余所有相同数量的堆都会被丢弃(移除)。
当只剩下一个堆,且该堆中仅包含一个弹珠时,游戏结束。游戏的目标是以最少的回合数结束游戏。请注意,这是一个合作游戏,孩子们不是在相互竞争,而是共同努力达成目标。
请帮助孩子们找到最佳的游戏策略。
输入格式
输入的第一行包含一个整数 $T$ —— 测试用例的数量 ($1 \le T \le 500$)。 接下来的 $T$ 行,每行描述一个测试用例,包含四个非负整数 $d_1, d_2, d_3, d_4$ ($0 \le d_i \le 20$)。
输出格式
对于每个测试用例,输出一个整数 $t$ —— 结束游戏所需的最少回合数。 然后,按执行顺序输出 $t$ 个回合的描述。每个描述应包含三个整数 $m, m_1, m_2$ —— 分别表示被拆分的堆的大小以及拆分后两个新堆的大小 ($m \ge 2; m_1 > 0; m_2 > 0; m_1 + m_2 = m$)。请注意,在执行该回合时,必须存在一个大小为 $m$ 的堆,且在游戏结束时,应该只剩下一个堆,且该堆中包含一个弹珠。
样例
输入 1
2 1 0 1 0 0 1 2 3
输出 1
3 6 2 4 4 2 2 2 1 1 5 15 10 5 10 5 5 5 1 4 4 2 2 2 1 1
说明
考虑第二个样例。最初,有一个包含 $2^0 + 2^1 + 2^2 + 2^3 = 15$ 个弹珠的堆。第一回合后,剩下两个分别包含 10 和 5 个弹珠的堆。第二次拆分后,有三个包含 5 个弹珠的堆,其中两个被丢弃,因此只剩下一个包含 5 个弹珠的堆。第三回合后,剩下两个分别包含 1 和 4 个弹珠的堆。第四回合后,剩下两个分别包含 1 和 2 个弹珠的堆(另一个包含 2 个弹珠的堆被丢弃)。最后,在第五回合后,只剩下一个包含 1 个弹珠的堆(其他两个包含 1 个弹珠的堆被丢弃)。