import java.util.ArrayList;
public class Main {
/*
* 总共144cm,切割成N段,最短1cm,其中任意三段都不能构成三角形,问N的最大值以及每一段的长度
* 实现过程:
* 按照斐波那契的数列进行截取,截取的长度和<=144
*/
public static void main(String[] args) {
int n = 144;
int len = 0;
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(1);
len = 2;
int i=2;
int temp=0;
while(len<n){
temp = list.get(i-2)+list.get(i-1);
list.add(temp);
i++;
len+=temp;
}
System.out.println(list.size());
for(Integer ele:list){
System.out.print(ele+" ");
}
}
}