#CSPX002. 训练

训练

题目描述

nn 为同学和 nn 个篮球,人和球编号都为 1...n1...n。开始时每个同学都手持与自己编号相同的球。现在要反复执行如下操作若干轮传球训练:每轮中, ii 号同学把当前手中的球(无论是几号球)传给 aia_i 号同学。保证 1ain1 \le a_i \le n 且互不相等,也就是每个同学每轮都会传出 11 个球,并且也接到 11 个球。

求至少连续进行几轮如上操作后,再次出现所有同学都持有与自己编号相同的球的情况。

输入格式

第一行一个正整数 nn

第二行 nn 个正整数 a1,a2ana_1, a_2 \dots a_n

输出格式

一个正整数表示答案。

输入输出样例

输入样例1

6
3 6 4 1 2 5

输出样例1

3

提示:我们考虑第 ii 号球每轮在几号同学手里,这样会容易思考一些。如上述样例中

一轮后 161 \dots 6 号球分别在 3,6,4,1,2,53,6,4,1,2,5 号同学手里;

二轮后 161 \dots 6 号球分别在 4,5,1,3,6,14,5,1,3,6,1 号同学手里;

三轮后 161 \dots 6 号球分别在 1,2,3,4,5,61,2,3,4,5,6 号同学手里;

输入样例2

9
8 9 5 1 6 2 4 7 3
20

数据范围与提示

对于 30%30\% 的数据, n3 n \le 3;

对于 60%60\% 的数据, n10 n \le 10;

对于 30%30\% 的数据, ai=i a_i = i;

对于 30%30\% 的数据, ai=i%n+1 a_i = i\%n + 1;

对于 30%30\% 的数据, ai=(i+1)%n+1 a_i = (i + 1) \% n + 1;

对于 100%100\% 的数据, 1n20 1 \le n \le 201ain1 \le a_i \le n 且互不相等;