circle

Grade Open Time Friday, 19 September 2014, 10:07 am
Discount 0.8 Time Discount Friday, 26 September 2014, 10:07 am
Allow late Yes Close Time Friday, 26 September 2014, 10:07 am
Input file circleb.in Output file circleb.out

【题目描述】


有n个排成一圈的格子,并且已知正整数k和m,你需要往每个格子中填入一个大于等于k的正整数。将相邻的一些格子(或一个单独的格子)中的数加起来,可以产生一个新的数。

假设使用格子中的数可以产生出m,m+1,…,i,但不能产生i+1。求出往格子中填入哪些数,可以使得i尽量大。


【输入格式】

三行,每行一个正整数,分别为n,m,k。(k<=m)

【输出格式】


第一行一个正整数,表示最大的i。

下面若干行,每行为一个使i最大的填数方案,按照字典序升序排列。每行n个正整数a1,a2,…,an,表示依次往格子中填入的数,其中a1是n个数中最小的数。

注意,(1,1,2,3),(1,3,2,1),(1,2,3,1),(1,1,3,2)被认为是不同的方案,都需要输出。


【样例输入】

5
2
1

【样例输出】

21
1 3 10 2 5
1 5 2 10 3
2 4 9 3 5
2 5 3 9 4

【提示】


30%的数据中,n<=5。

100%的数据中,n<=6,k<=m<=20。


【来源】

在此键入。