#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define endl '\n' #define ALL(v) (v).begin(), (v).end() #define RALL(v) (v).rbegin(), (v).rend() #define UNIQ(v) (v).erase(unique((v).begin(), (v).end()), (v).end()) typedef long long ll; typedef long double ld; typedef pair P; typedef complex comp; typedef vector< vector > matrix; struct pairhash { public: template size_t operator()(const pair &x) const { size_t seed = hash()(x.first); return hash()(x.second) + 0x9e3779b9 + (seed<<6) + (seed>>2); } }; const int inf = 1e9 + 9; const ll mod = 1e9 + 7; const double eps = 1e-8; const double pi = acos(-1); int n, d, k; string memo[110][1010][11]; string calc(int a, int b, int c) { if (a > n) { return (b==0&&c==0?"":"-"); } if (memo[a][b][c].size() == 0) { string s = calc(a+1, b-a, c-1); stringstream ss; if (s.size() == 0 || s[0] != '-') { ss << a << ' ' << s; memo[a][b][c] = ss.str(); } else memo[a][b][c] = calc(a+1, b, c); } return memo[a][b][c]; } string solve() { string ret = calc(1, d, k); return (ret[0]=='-'?"-1":ret); } void input() { cin >> n >> d >> k; } int main() { ios::sync_with_stdio(false); cin.tie(0); cout << fixed << setprecision(15); input(); cout << solve() << endl; }