// Problem: E - LISDL // Contest: AtCoder - AtCoder Regular Contest 091 // URL: https://atcoder.jp/contests/arc091/tasks/arc091_c // Memory Limit: 256 MB // Time Limit: 2000 ms // // Powered by CP Editor (https://cpeditor.org) #include #include using namespace std; #define dbg(...) logger(#__VA_ARGS__, __VA_ARGS__) template void logger(string vars, Args &&... values) { cerr << vars << " = "; string delim = ""; (..., (cerr << delim << values, delim = ", ")); cerr << endl; } template inline auto vv(int m) { return vector>(m, vector(m)); } template inline auto vv(int m, int n) { return vector>(m, vector(n)); } template inline auto vv(int m) { return vector>(m, vector(m, init)); } template inline auto vv(int m, int n) { return vector>(m, vector(n, init)); } template using mpq = priority_queue, greater>; using ll = long long; using pii = pair; using vl = vector; using vi = vector; int main(int argc, char **argv) { ll n, a, b; cin >> n >> a >> b; if (a + b > n + 1 || a * b < n) { cout << -1 << endl; return 0; } vi ans; /* for (int i = b; i <= n; i += b) { for (int j = i; j > i - b; --j) { ans.push_back(j); } } if (ans.size() < n) { int rem = n - ans.size(); for (int i = 0; i < rem; ++i) { ans.push_back(n - i); } } */ int i = 0; for (a--; a >= 0; a--) { int sz = min(b, n - a); for (int j = i + sz; j > i; j--) { ans.push_back(j); } i += sz; n -= sz; } for (auto x : ans) cout << x << ' '; cout << endl; return 0; };