def smaller(lst1, lst2): for i in range(0, len(lst1)): if lst1[i] < lst2[i]: return lst1 if lst1[i] > lst2[i]: return lst2 return lst1 N, D, K = map(int, raw_input().split()) dp = [] for i in range(0, D+1): lst = [] for j in range(0, K+1): lst.append([False, []]) dp.append(lst) dp[D][K] = [True, []] for i in range(1, N+1): for j in range(1, D+1): for k in range(1, K+1): if dp[j][k][0] and j-i >= 0: newlst = [] for p in range(0, len(dp[j][k][1])): newlst.append(dp[j][k][1][p]) newlst.append(i) if not dp[j-i][k-1][0]: dp[j-i][k-1] = [True, newlst] else: if smaller(newlst, dp[j-i][k-1][1]) == newlst: dp[j-i][k-1] = [True, newlst] if not dp[0][0][0]: print -1 else: ans = str(dp[0][0][1][0]) for i in range(1, len(dp[0][0][1])): ans = ans + ' ' + str(dp[0][0][1][i]) print ans