/ bobble / 题库 /

星星序列

星星序列

Background

又是一个星夜,QuQ望着繁星点点的夜空,正发着呆

Description

他突发奇想,他把星空分成几个区块并给每个区块标号。
他惊喜地发现如果按照区块的顺序将每个区块星星个数排成一序列a,那么a[1]<a[2]<…<a[n-1]<a[n],a[1]=1.而且每个区块的星星的个数a[k]都等于其他两个区块a[i]和a[j]的星星个数的和;(1<=i<=j<=n)
他尝试着将a[n]作为最后一项,构造一个也满足a[k]=a[i]+a[j]的序列l,结果得到的序列l的长度无论如何都比星星个数构成的序列a长,现在QuQ想考考你,他把a[n]告诉你,你得想办法找出星星序列a,要求使每个数尽量大。

Format

Input

共一行,只有一个整数a[n],即星星构成的序列的最后一项

Output

第一行是输出一个整数n,表示序列中的元素个数;
第二行输出数列,每两个数之间有且只有一个空格.

Sample 1

Input

4

Output

3
1 2 4

Limitation

Time Limit: 1000 MS

Memory Limit: 256000 K
Allow Language: Pascal , CPP ,C

Hint

对于80%的数据,1<=n<=1000;
对于100%的数据, 1<=n<=1500.

注:改自《国际大学生程序设计竞赛例题解数论、计算几何、搜索算法专集 2006》P 229 神奇的数列

版权归原作者所有

信息

难度
9
分类
(无)
标签
(无)
递交数
1
已通过
1
通过率
100%
上传者