fun main(arr:Array) { val(n,d,k) = readLine()!!.split(" ").map { it.toInt() } itemCount = n val ans = getAns(1, d, k) println(ans.joinToString(" ")) } var itemCount = 0 val dic = mutableMapOf>>>() fun getAns(index:Int, remain:Int, remainCount:Int):MutableList { if(remain == 0) { if(remainCount == 0) { return mutableListOf() } else { return mutableListOf(-1) } } if(remainCount <= 0) { return mutableListOf(-1) } if(index > itemCount) { return mutableListOf(-1) } if(remain < 0) { return mutableListOf(-1) } dic[index]?: run { dic[index] = mutableMapOf() } dic[index]!![remain]?: run { dic[index]!![remain] = mutableMapOf() } dic[index]!![remain]!![remainCount]?.let { return it.toMutableList() } var ret = getAns(index + 1, remain - index, remainCount - 1) if(ret.isEmpty() || ret[0] != -1) { ret = ret.map { it }.toMutableList() ret.add(0, index) } else { ret = getAns(index + 1, remain, remainCount) } dic[index]!![remain]!![remainCount] = ret.map { it } return ret }