#include <iostream>
#include <vector>
#include <climits>
using namespace std;
typedef long long ll;
const ll INF = (ll)1e18;
int main() {
int n;
ll k;
cin >> n >> k;
vector<int> a(n);
for (int i = 0; i < n; ++i) cin >> a[i];
vector<ll> dp(n, 1); // dp[i] — количество возрастающих подпоследовательностей, начинающихся с i
// Считаем dp[i] — начиная с конца
for (int i = n - 1; i >= 0; --i) {
for (int j = i + 1; j < n; ++j) {
if (a[j] > a[i]) {
dp[i] += dp[j];
if (dp[i] >= INF) dp[i] = INF;
}
}
}
vector<int> result;
ll remaining_k = k;
int last = INT_MIN;
int pos = 0;
while (remaining_k > 0 && pos < n) {
for (int i = pos; i < n; ++i) {
if (a[i] <= last) continue;
// считаем сколько последовательностей начинается с i, и соответствуют условиям
ll count = dp[i];
if (remaining_k > count) {
remaining_k -= count;
} else {
result.push_back(a[i]);
last = a[i];
pos = i + 1;
remaining_k--; // одна подпоследовательность выбрана
break;
}
}
}
cout << result.size() << endl;
for (int x : result) cout << x << " ";
cout << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8Y2xpbWl0cz4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnR5cGVkZWYgbG9uZyBsb25nIGxsOwoKY29uc3QgbGwgSU5GID0gKGxsKTFlMTg7CgppbnQgbWFpbigpIHsKICAgIGludCBuOwogICAgbGwgazsKICAgIGNpbiA+PiBuID4+IGs7CiAgICB2ZWN0b3I8aW50PiBhKG4pOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyArK2kpIGNpbiA+PiBhW2ldOwoKICAgIHZlY3RvcjxsbD4gZHAobiwgMSk7IC8vIGRwW2ldIOKAlCDQutC+0LvQuNGH0LXRgdGC0LLQviDQstC+0LfRgNCw0YHRgtCw0Y7RidC40YUg0L/QvtC00L/QvtGB0LvQtdC00L7QstCw0YLQtdC70YzQvdC+0YHRgtC10LksINC90LDRh9C40L3QsNGO0YnQuNGF0YHRjyDRgSBpCgogICAgLy8g0KHRh9C40YLQsNC10LwgZHBbaV0g4oCUINC90LDRh9C40L3QsNGPINGBINC60L7QvdGG0LAKICAgIGZvciAoaW50IGkgPSBuIC0gMTsgaSA+PSAwOyAtLWkpIHsKICAgICAgICBmb3IgKGludCBqID0gaSArIDE7IGogPCBuOyArK2opIHsKICAgICAgICAgICAgaWYgKGFbal0gPiBhW2ldKSB7CiAgICAgICAgICAgICAgICBkcFtpXSArPSBkcFtqXTsKICAgICAgICAgICAgICAgIGlmIChkcFtpXSA+PSBJTkYpIGRwW2ldID0gSU5GOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHZlY3RvcjxpbnQ+IHJlc3VsdDsKICAgIGxsIHJlbWFpbmluZ19rID0gazsKICAgIGludCBsYXN0ID0gSU5UX01JTjsKCiAgICBpbnQgcG9zID0gMDsKICAgIHdoaWxlIChyZW1haW5pbmdfayA+IDAgJiYgcG9zIDwgbikgewogICAgICAgIGZvciAoaW50IGkgPSBwb3M7IGkgPCBuOyArK2kpIHsKICAgICAgICAgICAgaWYgKGFbaV0gPD0gbGFzdCkgY29udGludWU7CgogICAgICAgICAgICAvLyDRgdGH0LjRgtCw0LXQvCDRgdC60L7Qu9GM0LrQviDQv9C+0YHQu9C10LTQvtCy0LDRgtC10LvRjNC90L7RgdGC0LXQuSDQvdCw0YfQuNC90LDQtdGC0YHRjyDRgSBpLCDQuCDRgdC+0L7RgtCy0LXRgtGB0YLQstGD0Y7RgiDRg9GB0LvQvtCy0LjRj9C8CiAgICAgICAgICAgIGxsIGNvdW50ID0gZHBbaV07CgogICAgICAgICAgICBpZiAocmVtYWluaW5nX2sgPiBjb3VudCkgewogICAgICAgICAgICAgICAgcmVtYWluaW5nX2sgLT0gY291bnQ7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICByZXN1bHQucHVzaF9iYWNrKGFbaV0pOwogICAgICAgICAgICAgICAgbGFzdCA9IGFbaV07CiAgICAgICAgICAgICAgICBwb3MgPSBpICsgMTsKICAgICAgICAgICAgICAgIHJlbWFpbmluZ19rLS07IC8vINC+0LTQvdCwINC/0L7QtNC/0L7RgdC70LXQtNC+0LLQsNGC0LXQu9GM0L3QvtGB0YLRjCDQstGL0LHRgNCw0L3QsAogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgY291dCA8PCByZXN1bHQuc2l6ZSgpIDw8IGVuZGw7CiAgICBmb3IgKGludCB4IDogcmVzdWx0KSBjb3V0IDw8IHggPDwgIiAiOwogICAgY291dCA8PCBlbmRsOwoKICAgIHJldHVybiAwOwp9