Ural1148积木搭建

时间限制:10s      空间限制:162MB

题目描述

搭一个高度为H,包含N个积木块,并且底层为M个积木的高塔。这个高塔有一个特点,相邻两个塔的积木数相差1。比如当H=6,M=2,N=13: 我们可以这样表示一个高塔,从底层依次纪录每行的积木数,比如这个塔记录成2,3,2,3,2,1。现在任务是,求出至少使用N个砖块,且H和M给出的塔的个数,并且求出字典顺序第K小的塔。(注意不一定要使用完所有的砖块)


输入格式

第一行三个数N、H、M。以下若干行,每行一个数K。以-1结尾。


输出格式

第一行一个数,为总数。以下若干行(不超过 10行),对于每个K,给出相应的塔。数据保证K合法。


样例输入

22 5 4
1
10
-1

样例输出

10
4 3 2 1 2
4 5 4 5 4

提示

100%的数据N<=32767,H<=60,M<=10


题目来源

没有写明来源