#1396. 累加序列

内存限制:512 MiB 时间限制:1000 ms 标准输入输出
题目类型:传统 评测方式:Special Judge
上传者: MCPlayer542

题目描述

给定一个长为 nn 的正整数序列 a1a_1 ,a2a_2 , ...... , ana_n

定义 一次操作为:对于一个正整数 k<nk<n ,从前往后将 aia_i 变为 ai+ai+ka_i+a_{i+k}

具体地,用 C++ 代码实现如下:

for(int i = 1; i <= n - k; ++i)  a[i] += a[i + k];

你想让这个正整数序列在经历了不超过 nn 次操作以后使得 a[1]a[1] 变成 i=1na[i]\sum\limits_{i=1}^n a[i] ,你想知道怎样的操作可以得到这样的结果。

输入格式

输入一个数 nn,表示序列长度。

输出格式

第一行输出一个数 mm,表示操作数个数。

第二行 mm 个数,表示每个操作的 kk 值。

样例

样例输入 1

2

样例输出 1

1
1

样例输入 2

5

样例输出 2

3
2 4 1

数据范围与提示

对于所有数据, 1n10001 \leq n \leq 1000

对第一组样例,进行一次 k=1k=1 的操作即可让 a1a_1 的值变为 a1+a2a_1+a_2,即为整个序列的和。

对于第二组样例,一开始正整数序列为 a1a_1 , a2a_2 , a3a_3,经历 k=2k=2 操作后为 a1+a3a_1+a_3 , a2+a4a_2+a_4 , a3+a5a_3+a_5 , a4a_4 , a5a_5,经历 k=4k=4 操作后为 a1+a3+a5a_1+a_3+a_5 , a2+a4a_2+a_4 , a3+a5a_3+a_5 , a4a_4 , a5a_5,经历 k=1k=1 操作后为 a1+a3+a5+a2+a4a_1+a_3+a_5+a_2+a_4 , a2+a4+a3+a5a_2+a_4+a_3+a_5 , a3+a5+a4a_3+a_5+a_4 , a4+a5a_4+a_5 , a5a_5,即为结果。

注意输出格式