Yandex 的机器学习算法优化部门正在积极寻找适用于所有公式的最佳通用多项式表示法。
他们处理形式为 $p = a_0 + a_1x + \dots + a_{n-1}x^{n-1} + a_nx^n$ 的多项式,其中 $0 \le a_i < 10^9 + 7$。所有关于多项式的运算、系数以及在点上的取值均在模 $10^9 + 7$ 下进行,以避免出现大数或非整数。
最近,我们的一位新实习生发明了一种新的短多项式表示法,其性能优于当前结果,且看起来非常有前景。
考虑一个非零多项式 $p(x) = a_0 + a_1x + \dots + a_{n-1}x^{n-1} + a_nx^n$ 及其因式分解: $$p(x) = p_1(x)^1 \cdot p_2(x)^2 \cdot p_3(x)^3 \cdot \dots \cdot p_k(x)^k$$ 其中 $\deg(p_k(x)) \ge 1$。该因式分解要求 $k$ 尽可能大,在此基础上 $\deg(p_k(x))$ 尽可能大,在此基础上 $\deg(p_{k-1}(x))$ 尽可能大,以此类推。这里 $\deg(q(x))$ 表示多项式 $q(x)$ 的次数。所有多项式 $p_1, p_2, \dots, p_k$ 在系数和点取值计算方面均满足与多项式 $p$ 相同的要求。
遗憾的是,这位实习生还没能为这个因式分解问题找到快速的解决方案。因此,我们想看看你是否能实现一个高效的解法。如果你做不到,我们承诺会忘记这个关于此类因式分解的无望的新想法。
你的任务是向我们证明你能做到。
输入格式
第一行包含一个整数 $n$,表示输入多项式 $p$ 的次数 ($1 \le n \le 100$)。 第二行包含 $n + 1$ 个整数:多项式的系数 $a_0, a_1, a_2, \dots, a_n$ ($0 \le a_i < 10^9 + 7, a_n \neq 0$)。
输出格式
第一行输出一个整数 $k$。 第二行输出 $k$ 个整数:$\deg(p_1(x)), \deg(p_2(x)), \dots, \deg(p_k(x))$。
样例
样例输入 1
5 0 0 2 6 6 2
样例输出 1
3 0 1 1
样例输入 2
2 224999993 70000 1
样例输出 2
2 0 1
样例输入 3
2 1 1 1
样例输出 3
1 2