def solve(): N, D, K = list(map(int, input().split())) L = list(range(N+1)) last = 0 ans = [] while K: can = sum(range((N + 1) - (K - 1), N + 1)) # K - 1 個で作れる最大金額 last = max(last + 1, D - can) # 作れる最大金額が残金より小さいとき、今、多めに買う必要がある # 一旦多めに買ったら、以降は最大を買う必要があるが、そこはコードに組み込まなくてもいい...? ans.append(last) D -= last K -= 1 if D != 0: print(-1) else: print(' '.join(map(str, ans))) if __name__ == '__main__': solve()