Byteasar 决定开始制作项链。他以低廉的价格买了一串很长的彩色珊瑚珠子。Byteasar 现在有一台机器,对于给定的 $k$ ($k > 0$),可以将这串珠子切割成长度为 $k$ 的片段(即第一段包含第 $1, \dots, k$ 颗珠子,第二段包含第 $k+1, \dots, 2k$ 颗珠子,以此类推)。如果珠子串的总长度不是 $k$ 的倍数,则最后剩下的不足 $k$ 颗的片段将被舍弃。我们用正整数来表示珠子的颜色。
Byteasar 一向推崇多样性,他想知道应该如何选择 $k$ 的值,才能得到尽可能多不同的片段。长珠子串的起点和终点是固定的(即有明确的开始和结束,而不是两个可互换的端点),机器当然是从起点开始切割。另一方面,在切割得到的片段中,端点是可以互换的,因此片段可以翻转。换句话说,片段 $(1,2,3)$ 和 $(3,2,1)$ 对我们来说是相同的。请编写一个程序,为 Byteasar 确定 $k$ 的最优值。
例如,对于以下珠子串:
$$(1,1,1,2,2,2,3,3,3,1,2,3,3,1,2,2,1,3,3,2,1)$$
- 使用 $k=1$,我们可以得到 3 个不同的片段:(1), (2), (3);
- 使用 $k=2$,我们可以得到 6 个不同的片段:(1,1), (1,2), (2,2), (3,3), (3,1), (2,3);
- 使用 $k=3$,我们可以得到 5 个不同的片段:(1,1,1), (2,2,2), (3,3,3), (1,2,3), (3,1,2);
- 使用 $k=4$,我们可以得到 5 个不同的片段:(1,1,1,2), (2,2,3,3), (3,1,2,3), (3,1,2,2), (1,3,3,2);
- 使用更大的 $k$ 值,最多只能得到 3 个不同的片段。
输入格式
标准输入的第一行包含一个整数 $n$ ($1 \le n \le 200\,000$),表示要切割的珠子串长度。第二行包含 $n$ 个正整数 $a_i$ ($1 \le a_i \le n$),由空格分隔,表示 Byteasar 珠子串中连续珠子的颜色。
输出格式
第一行应输出两个由空格分隔的整数:通过最优选择参数 $k$ 可以获得的不同片段的最大数量,以及满足该最优值的 $k$ 的个数 $l$。第二行应包含 $l$ 个由空格分隔的整数:所有能得到最优解的参数 $k$ 的值;这些值可以以任意顺序给出。
样例
输入 1
21 1 1 1 2 2 2 3 3 3 1 2 3 3 1 2 2 1 3 3 2 1
输出 1
6 1 2