#include <iostream>
#include <string>
void composition(int n, int k, int last, std::string s) {
if (k == 0) {
if (n == 0)
std::cout << s << std::endl;
return;
}
composition(n - last + 1, k - 1, last - 1, s + ' ' + std::to_string(last - 1));
composition(n - last, k - 1, last, s + ' ' + std::to_string(last));
composition(n - last - 1, k - 1, last + 1, s + ' ' + std::to_string(last + 1));
}
int main()
{
int n = 3;
int k = 6;
for (int l = (2 * n - k * (k - 1)) / (2 * k);
l <= (2 * n + k * (k - 1) + 2 * k - 1) / (2 * k); l++)
composition(n - l, k - 1, l, std::to_string(l));
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgoKdm9pZCAgY29tcG9zaXRpb24oaW50IG4sIGludCBrLCBpbnQgbGFzdCwgc3RkOjpzdHJpbmcgcykgewoJaWYgKGsgPT0gMCkgewoJCWlmIChuID09IDApCgkJCXN0ZDo6Y291dCA8PCBzIDw8IHN0ZDo6ZW5kbDsKCQlyZXR1cm47Cgl9Cgljb21wb3NpdGlvbihuIC0gbGFzdCArIDEsIGsgLSAxLCBsYXN0IC0gMSwgcyArICcgJyArIHN0ZDo6dG9fc3RyaW5nKGxhc3QgLSAxKSk7Cgljb21wb3NpdGlvbihuIC0gbGFzdCwgayAtIDEsIGxhc3QsIHMgKyAnICcgKyBzdGQ6OnRvX3N0cmluZyhsYXN0KSk7Cgljb21wb3NpdGlvbihuIC0gbGFzdCAtIDEsIGsgLSAxLCBsYXN0ICsgMSwgcyArICcgJyArIHN0ZDo6dG9fc3RyaW5nKGxhc3QgKyAxKSk7Cn0KCmludCBtYWluKCkKewoJaW50IG4gPSAzOwoJaW50IGsgPSA2OwoJZm9yIChpbnQgbCA9ICgyICogbiAtICBrICogKGsgLSAxKSkgLyAoMiAqIGspOwoJCSAgICAgbCA8PSAoMiAqIG4gKyBrICogKGsgLSAxKSArIDIgKiBrIC0gMSkgLyAoMiAqIGspOyBsKyspCgkJY29tcG9zaXRpb24obiAtIGwsIGsgLSAxLCBsLCBzdGQ6OnRvX3N0cmluZyhsKSk7Cn0=