比赛场次 208
比赛名称 20130711
比赛状态 已结束比赛成绩
开始时间 2013-07-11 08:00:00
结束时间 2013-07-11 12:00:00
开放分组 全部用户
注释介绍
题目名称 circle
输入输出 circleb.in/out
时间限制 1000 ms (1 s)
内存限制 256 MiB
测试点数 10 简单对比
用户 结果 时间 内存 得分

circle

★★   输入文件:circleb.in   输出文件:circleb.out   简单对比
时间限制:1 s   内存限制:256 MiB

【题目描述】


有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。


【来源】

在此键入。