#P7022. [NWRRC 2017] Dividing Marbles

[NWRRC 2017] Dividing Marbles

Description

Debbie, Debby, Debra 和 Deborah要一起玩一个关于弹珠的游戏。Debbie 带来了 2d12^{d_{1}} 颗弹珠, Debby 带来了 2d22^{d_{2}} 颗弹珠, Debra 带来了 2d32^{d3} 颗弹珠, 而 Deborah 带来了 2d42^{d4} 颗弹珠。这些孩子们把他们的弹珠放在一起,总共有 2d1+2d2+2d3+2d42^{d_{1}} + 2^{d_{2}} + 2^{d_{3}} + 2^{d_{4}} 颗, 游戏开始了。

游戏是多回合制。每一个回合包括两个步骤:

这些孩子们选择他们的任意一堆大于1个的弹珠然后分入两个大于0个的堆中。相当于,如果选中的那堆有 m2m \ge 2 颗弹珠, 新的一堆必须要有 m1m_{1}m2m_{2} 颗弹珠且 m1m_1m2m_2 为正整数, 且 m1+m2=mm_{1} + m_{2} = m.

如果有许多堆拥有同样数目的弹珠,只有一堆会被保留,其他的都会被丢弃。

当只有一堆弹珠被留下且这堆弹珠只有一颗时,游戏就结束了。游戏的目标就是用尽量少的回合让游戏结束。注意这个游戏是合作性质的,那就是,这些孩子不是互相争斗的,而是一起尝试达成同一个目标。

请帮助这些孩子找到游戏的最佳方案。

Input Format

第一行包括一个单独的整数,T 即测试用例的数量(1T500)(1≤T≤500) .

下面的每一行都描述一个测试用例且包含四个非负整数 d1,d2,d3,d4(0di20)d_{1}, d_{2}, d_{3}, d_{4} (0 \le d_{i} \le 20)

Output Format

对于每一个测试用例,输出一个整数t,即游戏结束所需的最少次数。

然后,按照回合的顺序,输出这些回合的说明。每一行说明都要包括三个整数 m,m1,m2 m , m_{1}, m_{2} 即是被分的堆和新堆的弹珠数量,依次为(m2;m1>0;m2>0;m1+m2=m)(m≥2 ; m_{1} > 0; m_{2} > 0 ; m_{1} + m_{2} = m)

请注意大小为m的弹珠堆一定要存在,且在游戏结束时应该只剩下一堆且那一堆应该只有一颗弹珠。

2
1 0 1 0
0 1 2 3

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

Hint

时间限制: 3 s, 内存限制: 512 MB.