4424 - 倒水问题

通过次数

1

提交次数

5

时间限制 : 1 秒
内存限制 : 128 MB

假定两个水壶 AB,供水量不限。可以使用三种方法装水:

  • 给一个水壶装水;
  • 把一个水壶倒空;
  • 从一个水壶倒进另一个水壶。

当从一个水壶倒进另一个水壶时,如果第一个水壶倒空,或者第二个水壶装满就不能再倒了。例如,一个水壶 A5 加仑和另一个水壶 B6 加仑,水量是 8 加仑,则从水壶 A 倒进水壶 B 时,让水壶 B 充满水而水壶 A3 加仑水。

问题有 3 个参数:C_aC_bN,分别表示水壶 AB 的容量,目标水量 N。问题的目标是,给出一系列倒水的步骤,使水壶 B 中的水量恰好是 N

如果有多种操作方案,请给出操作次数最少的任意一种方案。

输入

第一行为数据组数 T

接下来的 T 行,每行三个数字 C_aC_bN,意义如题目所示。

T 不超过 300 < C_a\le C_bN\le C_b\le 1000,且 C_aC_b 互质。

输出

输出共为 T 行,第一个数字为要达成的完成次数 a_i(题目保证存在解)。

接下来 a_i 个数字,表示各种操作:

  • 1 操作:fill A 意为给 A 灌满水
  • 2 操作:fill B
  • 3 操作:empty A 意为将 A 中水倒空
  • 4 操作:empty B
  • 5 操作:pour B A 意为将 B 中水倒到 A 中(直到 A 满或者 B 中水没有剩余)
  • 6 操作:pour A B

样例

输入

2
3 5 4 
5 7 3

输出

6 2 5 3 5 2 5 
6 1 6 1 6 4 6

输入

1
26 29 11

输出

22 1 6 1 6 4 6 1 6 4 6 1 6 4 6 1 6 4 6 1 6 4 6