N, D, K = map(int, input().split()) # 個数が足りない if N < K: exit(print(-1)) rui = [i for i in range(N + 1)] for i in range(N): rui[i + 1] += rui[i] # 予算が少なすぎ if D < rui[K]: exit(print(-1)) # 予算が大きすぎ # N + (N - 1) + ... + (N - K + 1)でも D に届かない if sum([i for i in range(N, N - K, -1)]) < D: exit(print(-1)) nokori_money = D pos = N ans = [] # Nのおやつから検討する for i in range(K): nokori_cnt = K - i # おやつ pos を購入してよいか? # 条件:pos を購入したとき、残りの個数で残りのお金を使える # 条件を満たさない場合は pos-1 while True: if rui[nokori_cnt - 1] > nokori_money - pos: # pos は購入できない pos -= 1 else: nokori_money -= pos ans.append(pos) pos -= 1 break ans.reverse() print(*ans)