#include<iostream>
using namespace std;
int n, k, b[1000], ok;
void khoitao() {
for (int i = 1; i <= k; i++) b[i] = n - k + i; // Bắt đầu từ tổ hợp cuối cùng (3 4 5)
}
void lietke() {
int i = k;
while (i > 0 && b[i] == i) i--; // Tìm phần tử cần giảm
if (i == 0) {
ok = 0; // Nếu không thể giảm thêm, dừng lại
} else {
b[i]--; // Giảm giá trị phần tử tại vị trí i
for (int j = i + 1; j <= k; j++) b[j] = b[j - 1] + 1; // Cập nhật các phần tử sau
}
}
int main() {
cin >> n >> k;
ok = 1;
khoitao(); // Khởi tạo tổ hợp lớn nhất
while (ok) {
for (int i = 1; i <= k; i++) cout << b[i] << " ";
cout << endl;
lietke();
}
}
I2luY2x1ZGU8aW9zdHJlYW0+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbiwgaywgYlsxMDAwXSwgb2s7Cgp2b2lkIGtob2l0YW8oKSB7CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBrOyBpKyspIGJbaV0gPSBuIC0gayArIGk7ICAvLyBC4bqvdCDEkeG6p3UgdOG7qyB04buVIGjhu6NwIGN14buRaSBjw7luZyAoMyA0IDUpCn0KCnZvaWQgbGlldGtlKCkgewogICAgaW50IGkgPSBrOwogICAgd2hpbGUgKGkgPiAwICYmIGJbaV0gPT0gaSkgaS0tOyAgLy8gVMOsbSBwaOG6p24gdOG7rSBj4bqnbiBnaeG6o20KCiAgICBpZiAoaSA9PSAwKSB7CiAgICAgICAgb2sgPSAwOyAgLy8gTuG6v3Uga2jDtG5nIHRo4buDIGdp4bqjbSB0aMOqbSwgZOG7q25nIGzhuqFpCiAgICB9IGVsc2UgewogICAgICAgIGJbaV0tLTsgIC8vIEdp4bqjbSBnacOhIHRy4buLIHBo4bqnbiB04butIHThuqFpIHbhu4sgdHLDrSBpCiAgICAgICAgZm9yIChpbnQgaiA9IGkgKyAxOyBqIDw9IGs7IGorKykgYltqXSA9IGJbaiAtIDFdICsgMTsgIC8vIEPhuq1wIG5o4bqtdCBjw6FjIHBo4bqnbiB04butIHNhdQogICAgfQp9CgppbnQgbWFpbigpIHsKICAgIGNpbiA+PiBuID4+IGs7ICAKICAgIG9rID0gMTsKICAgIGtob2l0YW8oKTsgIC8vIEto4bufaSB04bqhbyB04buVIGjhu6NwIGzhu5tuIG5o4bqldAogICAgd2hpbGUgKG9rKSB7CiAgICAgICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gazsgaSsrKSBjb3V0IDw8IGJbaV0gPDwgIiAiOyAgCiAgICAgICAgY291dCA8PCBlbmRsOwogICAgICAgIGxpZXRrZSgpOwogICAgfQp9Cg==