你是 Little Coders 幼儿园的一名老师。班上有 $N$ 个孩子,每个孩子都有一个从 $1$ 到 $N$ 的不同学号。班上的每个孩子都有一个唯一的“永远的好朋友”(BFF),你知道每个孩子的 BFF 是谁。BFF 关系不一定是相互的——也就是说,B 是 A 的 BFF 并不意味着 A 是 B 的 BFF。
你明天的课程计划包括一项活动,参与者必须围坐成一个圆圈。你希望通过构建一个尽可能大的圆圈,使得圆圈中的每个孩子都坐在其 BFF 的旁边(左侧或右侧),从而使活动尽可能成功。不在圆圈中的孩子将观看活动而不参与。
圆圈中最多能有多少个孩子?
输入格式
输入的第一行包含测试用例的数量 $T$。接下来是 $T$ 个测试用例。每个测试用例包含两行。第一行包含一个整数 $N$,表示班级中孩子的总数。第二行包含 $N$ 个整数 $F_1, F_2, \dots, F_N$,其中 $F_i$ 是学号为 $i$ 的孩子的 BFF 的学号。
输出格式
对于每个测试用例,输出一行 "Case #x: y",其中 $x$ 是测试用例编号(从 $1$ 开始),$y$ 是可以围成圆圈且满足每个孩子都坐在其 BFF 旁边的最大孩子人数。
数据范围
$1 \le T \le 100$。 $1 \le F_i \le N$,对于所有 $i$。 $F_i \neq i$,对于所有 $i$。(没有孩子是自己的 BFF。)
小型数据集(测试集 1 - 可见) $3 \le N \le 10$。
大型数据集(测试集 2 - 隐藏) $3 \le N \le 1000$。
样例
输入 1
4 4 2 3 4 1 4 3 3 4 1 4 3 3 4 3 10 7 8 10 10 9 2 9 6 3 3
输出 1
Case #1: 4 Case #2: 3 Case #3: 3 Case #4: 6
说明
在样例 #4 中,最大的圆圈按以下顺序排列孩子:7 9 3 10 4 1。(该圆圈的任何镜像或旋转也同样适用。)注意,学号为 1 的孩子与学号为 7 的孩子相邻,这是符合要求的,因为该列表代表一个圆圈。