忍术是神秘的日本刺客——忍者所使用的武术。作为忍术练习的初学者,你的第一个任务是掌握抓钩的使用。
抓钩是一种高科技装置,由一根(非常坚固且非常细的)绳子系着一个钩子组成。正确使用抓钩的方法是向目标投掷钩子,并希望它能钩住。
这一次,你成功了!你现在钩住了一个位于 $(0, 0)$ 的目标。你的绳子向左延伸,你位于绳子的末端;当你跳跃时,你将开始绕着目标进行逆时针摆动。在 $(0, 0)$ 的右侧和上方还有其他目标,坐标为 $(x_i, y_i)$,其中 $x_i \ge 0$ 且 $y_i \ge 0$。当绳子的内部点(非两端)接触到一个或多个目标时,绳子会绕着距离其运动端最近的目标弯曲。忽略你的初始速度;因为你是忍者,你的速度足够快,以至于你会持续绕着目标弯曲,直到你绕着单个目标旋转。
你的绳子当前长度为 $R$,但在开始摆动之前,你可以选择将其剪短到任意长度 $r$(包括非整数)。因此,你将从 $(-r, 0)$ 开始,并向下(逆时针)向 $(0, -r)$ 摆动。
一次摆动中,绳子上最多能产生多少个弯折?当绳子接触到一个目标并随后绕该目标旋转非零度数时,就会产生一个弯折。绳子将始终保持完全笔直(同样,因为你是忍者,这是可能的),除了在弯折处。
样例
在上面的例子中,有 6 个点:
- $(0, 0)$,
- $(3, 1)$,
- $(12, 4)$,
- $(14, 5)$,
- $(13, 7)$,以及
- $(7, 10)$。
你有一根长度为 24 的绳子。如果你不剪短绳子,那么你将绕着点 $(12, 4)$ 弯曲,然后绕着点 $(14, 5)$,接着绕着点 $(13, 7)$,最后你将困在绕着点 $(7, 10)$ 旋转的状态,剩余约 0.1705 单位的绳子。这总共产生了 4 个弯折。虽然你接触到了点 $(3, 1)$,但它没有贡献弯折,因为它与点 $(0, 0)$ 和 $(12, 4)$ 共线。
然而,如果你将绳子剪短 0.18 单位,你将没有足够的长度到达点 $(7, 10)$,而是会沿着以下路径:
(0, 0)--(12, 4)--(14, 5)--(13, 7)--(12, 4)--(14, 5)
并最终绕着点 $(14, 5)$ 旋转,剩余约 1.3004 单位的绳子。这条路径总共产生了 5 个弯折,是一个最优解。
下面样例输入中的 Case #1 代表了这个例子。
输入格式
输入的第一行包含 $T$,即测试用例的数量。每个测试用例的第一行包含两个整数:$N$ 和 $R$。接下来的 $N$ 行,每行包含一对整数 $x_i$ 和 $y_i$,表示目标的坐标,第一个目标位于 $(0, 0)$。
输出格式
对于每个测试用例,输出一行形式为 "Case #$C$: $k$" 的内容,其中 $C$ 是从 1 开始的用例编号,$k$ 是在一次摆动中绳子上能产生的最大弯折数。
数据范围
$1 \le T \le 100$
所有目标坐标均为整数。
所有目标位于不同的位置。
第一个列出的目标位于 $(0, 0)$。
至少存在一个 $r$ 的值能给出最优解,且具有以下性质:长度为 $r - 0.999999$ 的绳子也能给出相同的解(相同的弯折序列)。
子任务
小数据集(测试集 1 - 可见;11 分)
$1 \le N \le 10$
$1 \le R \le 1,000$
$0 \le x_i \le 1,000$
$0 \le y_i \le 1,000$
大数据集(测试集 2 - 隐藏;23 分)
$1 \le N \le 1,000$
$1 \le R \le 10^9$
$0 \le x_i \le 10^9$
$0 \le y_i \le 10^9$
样例
样例输入 1
6 6 24 0 0 3 1 12 4 14 5 13 7 7 10 2 1 0 0 2 0 2 1 0 0 1 0 2 10 0 0 4 0 3 50 0 0 9 0 10 0 3 12 0 0 3 0 3 4
样例输出 1
Case #1: 5 Case #2: 0 Case #3: 0 Case #4: 2 Case #5: 12 Case #6: 3