import std.stdio, std.array, std.string, std.conv, std.algorithm;
import std.typecons, std.range, std.random, std.math, std.container;
import std.numeric, std.bigint, core.bitop;

void main() {
    auto s = readln.split.map!(to!int);
    auto N = s[0];
    auto A = s[1].to!long;
    auto B = s[2].to!long;
    auto ans = new int[](N);

    if (N > A * B || N < A + B - 1) {
        writeln(-1);
        return;
    }

    for (int i = 1; i <= N; i += B) {
        for (int j = 0; j < B; j += 1) {
            int pos = i - 1 + j;
            if (pos >= N) break;
            int m = min(N+1, i+B.to!int);
            ans[pos] = m - j - 1;
        }
    }

    ans.map!(to!string).join(" ").writeln;
}
