你是一条友好的龙,正在保护你的巢穴免受贪婪骑士的侵害!你拥有 $H_d$ 点生命值和 $A_d$ 点攻击力,而骑士拥有 $H_k$ 点生命值和 $A_k$ 点攻击力。如果你的生命值在任何时候降至 0 或以下,你就会被击倒并立即失败;如果骑士的生命值在任何时候降至 0 或以下,骑士就会被击倒,你就赢了!
你将通过一系列回合与骑士战斗。在每一回合中,你先行动,你可以选择并执行以下任一动作:
- 攻击 (Attack):减少对手 $A_d$ 点生命值。
- 强化 (Buff):在战斗剩余时间内,将你的攻击力增加 $B$。
- 治疗 (Cure):你的生命值恢复为 $H_d$。
- 削弱 (Debuff):在战斗剩余时间内,减少对手 $A_k$ 点攻击力。如果削弱会导致对手的攻击力变为负数,则将其设为 0。
之后,如果你的动作执行后骑士的生命值大于 0,骑士将执行一次攻击动作。在那之后,回合结束。(注意:即使你击败骑士的那一回合,骑士没有机会行动,该回合仍然计入总回合数。)
注意,强化效果可以叠加;每次强化都会使你的攻击力额外增加 $B$。同样,削弱效果也可以叠加。
你希望尽可能快地击败骑士(如果可能的话),这样你就不会因为迟到而错过帮助村民在今晚的节日上烤棉花糖。你能确定击败骑士所需的最少回合数,或者判断这是否是不可能的吗?
输入格式
输入的第一行给出测试用例的数量 $T$。接下来是 $T$ 个测试用例。每个测试用例由一行组成,包含六个整数 $H_d, A_d, H_k, A_k, B$ 和 $D$,含义如上所述。
输出格式
对于每个测试用例,输出一行 Case #x: y,其中 $x$ 是测试用例编号(从 1 开始),$y$ 是 IMPOSSIBLE(如果无法击败骑士),或者是击败骑士所需的最少回合数。
数据范围
内存限制:1 GB。 $1 \le T \le 100$。
小型数据集(测试集 1 - 可见)
时间限制:60 秒。 $1 \le H_d \le 100$。 $1 \le A_d \le 100$。 $1 \le H_k \le 100$。 $1 \le A_k \le 100$。 $0 \le B \le 100$。 $0 \le D \le 100$。
大型数据集(测试集 2 - 隐藏)
时间限制:240 秒。 $1 \le H_d \le 10^9$。 $1 \le A_d \le 10^9$。 $1 \le H_k \le 10^9$。 $1 \le A_k \le 10^9$。 $0 \le B \le 10^9$。 $0 \le D \le 10^9$。
样例
样例输入 1
4 11 5 16 5 0 0 3 1 3 2 2 0 3 1 3 2 1 0 2 1 5 1 1 1
样例输出 1
Case #1: 5 Case #2: 2 Case #3: IMPOSSIBLE Case #4: 5
说明
在案例 #1 中,你有 11 点生命值和 5 点攻击力,骑士有 16 点生命值和 5 点攻击力。一种可能的最优动作序列是:
- 第 1 回合:攻击,将骑士生命值降至 11。然后骑士攻击,将你的生命值降至 6。
- 第 2 回合:攻击,将骑士生命值降至 6。然后骑士攻击,将你的生命值降至 1。
- 第 3 回合:治疗,将你的生命值恢复至 11。然后骑士攻击,将你的生命值降至 6。(如果你这一回合选择攻击,骑士的下一次攻击会导致你失败。)
- 第 4 回合:攻击,将骑士生命值降至 1。然后骑士攻击,将你的生命值降至 1。
- 第 5 回合:攻击,将骑士生命值降至 -4。你立即获胜,骑士没有机会进行下一次攻击。
在案例 #2 中,一种可能的最优动作序列是:
- 第 1 回合:强化,将你的攻击力增加至 3。然后骑士攻击,将你的生命值降至 1。
- 第 2 回合:攻击,将骑士生命值降至 0。你立即获胜,骑士没有机会进行下一次攻击。
在案例 #3 中,骑士只需要两次攻击就能击败你,而你无法足够快地造成足够的伤害来击败骑士。你可以通过在每次攻击后执行治疗动作来无限期地延长战斗,但实际上不可能击败骑士。
在案例 #4 中,一种可能的最优动作序列是:攻击、削弱、强化、攻击、攻击。