circle

成绩 开启时间 2014年09月19日 星期五 10:07
折扣 0.8 折扣时间 2014年09月26日 星期五 10:07
允许迟交 关闭时间 2014年09月26日 星期五 10:07
输入文件 circleb.in 输出文件 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。


【来源】

在此键入。