P1135

Ural 鹰蛋

Ural 鹰蛋

有一栋共 FF 层的建筑,楼层从最低的第 11 层开始编号。你拥有许多性质完全相同的鸡蛋,每个鸡蛋都装在相同的保护容器中。对于建筑中的每一层,你都希望确定从该层扔下鸡蛋时,鸡蛋是否会破裂。

鸡蛋是否破裂满足单调性:如果鸡蛋从第 ii 层扔下时会破裂,那么从任意第 jj 层扔下时也一定会破裂,其中 j≥ij\ge i;如果鸡蛋从第 ii 层扔下时不会破裂,那么从任意第 jj 层扔下时也一定不会破裂,其中 j≤ij\le i。

定义 Solvable⁡(F,D,B)\operatorname{Solvable}(F,D,B):当且仅当存在一种算法,能够确定一栋 FF 层建筑中每一层的鸡蛋破裂情况,并且满足以下限制时,该命题为真:

  • 最多进行 DD 次投掷,每次可以选择任意楼层并投掷一个鸡蛋;
  • 最多允许 BB 个鸡蛋破裂。

可以假设你至少拥有 DD 个鸡蛋。

输入格式

第一行包含测试用例数量 NN。

接下来 NN 行,每行包含三个整数 F,D,BF,D,B,表示一组测试用例。

保证所有输入均满足 Solvable⁡(F,D,B)\operatorname{Solvable}(F,D,B) 为真。

输出格式

对于每组测试用例,输出一行,格式为:

Case #x: Fmax Dmin Bmin

其中,xx 为从 11 开始的测试用例编号,各量定义如下:

  • Fmax⁡F_{\max}:满足 Solvable⁡(F′,D,B)\operatorname{Solvable}(F',D,B) 为真的最大 F′F'。如果该值大于或等于 2322^{32},则输出 −1-1。换言之,当且仅当 Solvable⁡(232,D,B)\operatorname{Solvable}(2^{32},D,B) 为真时,Fmax⁡=−1F_{\max}=-1;
  • Dmin⁡D_{\min}:满足 Solvable⁡(F,D′,B)\operatorname{Solvable}(F,D',B) 为真的最小 D′D';
  • Bmin⁡B_{\min}:满足 Solvable⁡(F,D,B′)\operatorname{Solvable}(F,D,B') 为真的最小 B′B'。

三个整数之间以一个空格分隔。

样例输入

2
3 3 3
7 5 3

样例输出

Case #1: 7 2 1
Case #2: 25 3 2

数据范围

  • 1≤N≤1001\le N\le 100;
  • 小规模数据:1≤F≤1001\le F\le 100,1≤D≤1001\le D\le 100,1≤B≤1001\le B\le 100;
  • 大规模数据:1≤F≤2×1091\le F\le 2\times 10^9,1≤D≤2×1091\le D\le 2\times 10^9,1≤B≤2×1091\le B\le 2\times 10^9。

来源与许可

本题题面与测试数据整理自 BZOJ。

样例 1

输入

2
3 3 3
7 5 3

输出

Case #1: 7 2 1
Case #2: 25 3 2