#include <bits/stdc++.h>
#define ll long long
#define el cout << '\n'
#define ii pair<int, int>
#define fi first
#define se second
using namespace std;
const int maxn = 1e5;
const int INF = 1e9;
struct Segment_Tree
{
int n;
vector<ii> tree;
vector<int> lazy;
Segment_Tree(int n = 0) : n(n)
{
tree.assign(4 * n + 10, ii(0, 0));
lazy.assign(4 * n + 10, 0);
}
void push(int id)
{
if (lazy[id] == 0)
return ;
for (int nid = id * 2; nid <= id * 2 + 1; nid++)
{
tree[nid].fi += lazy[id];
tree[nid].se += lazy[id];
lazy[nid] += lazy[id];
}
lazy[id] = 0;
}
void update(int id, int l, int r, int u, int v, int val)
{
if (r < u || l > v)
return ;
if (u <= l && r <= v)
{
tree[id].fi += val;
tree[id].se += val;
lazy[id] += val;
return ;
}
int m = l + r >> 1;
push(id);
update(id << 1, l, m, u, v, val);
update(id << 1 | 1, m + 1, r, u, v, val);
tree[id].fi = min(tree[id << 1].fi, tree[id << 1 | 1].fi);
tree[id].se = max(tree[id << 1].se, tree[id << 1 | 1].se);
}
ii get(int id, int l, int r, int u, int v)
{
if (r < u || l > v)
return ii(INF, -INF);
if (u <= l && r <= v)
return tree[id];
int m = l + r >> 1;
push(id);
ii a = get(id << 1, l, m, u, v);
ii b = get(id << 1 | 1, m + 1, r, u, v);
return ii(min(a.fi, b.fi), max(a.se, b.se));
}
void update(int l, int r, int v)
{
update(1, 0, n, l, r, v);
}
ii get(int l, int r)
{
return get(1, 0, n, l, r);
}
};
int n, k;
ll a[maxn + 10];
ii a_sorted[maxn + 10], pre[maxn + 10], suf[maxn + 10];
vector<int> ans;
Segment_Tree st;
bool is_intersect(ii a, ii b)
{
if (a.se > b.se)
swap(a, b);
return a.se >= b.fi;
}
int main()
{
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
if (fopen("M.INP", "r"))
{
freopen("M.INP", "r", stdin);
freopen("M.OUT", "w", stdout);
}
cin >> n >> k;
st = Segment_Tree(n);
for (int i = 1; i <= n; i++)
{
cin >> a[i];
a_sorted[i] = ii(a[i], i);
st.update(i, n, 1);
}
sort(a_sorted + 1, a_sorted + n + 1);
for (int i = 1; i <= n; )
{
bool flag = 0;
int j = i;
while (j < n && a_sorted[i] == a_sorted[j + 1])
j++;
for (int k = i; k <= j; k++)
st.update(a_sorted[k].se, n, -1);
// if (a_sorted[i].fi == 7)
// {
// for (int i = 0; i <= n; i++)
// cout << st.get(i, i).fi << ' ';
// el;
// }
// 0 0 1 2 3 4 5 6 7 8 7
int st_1 = max(1, a_sorted[i].se - k + 1);
int sum = st.get(st_1, st_1).fi;
pre[st_1] = st.get(0, st_1 - 1);
for (int p = st_1 + 1; p <= a_sorted[i].se; p++)
{
pre[p].fi = min(pre[p - 1].fi, sum);
pre[p].se = max(pre[p - 1].se, sum);
if (a[p] < a_sorted[i].fi)
sum--;
if (a[p] > a_sorted[i].fi)
sum++;
}
int st_2 = min(n, a_sorted[i].se + k - 1);
sum = st.get(st_2 - 1, st_2 - 1).fi;
suf[st_2] = st.get(st_2, n);
for (int p = st_2 - 1; p >= a_sorted[i].se; p--)
{
suf[p].fi = min(suf[p + 1].fi, sum);
suf[p].se = max(suf[p + 1].se, sum);
if (a[p] < a_sorted[i].fi)
sum++;
if (a[p] > a_sorted[i].fi)
sum--;
}
// if (a_sorted[i].fi == 7)
// {
// for (int P = st_1; P <= a_sorted[i].se; P++)
// cout << pre[P].fi << ' ' << pre[P].se, el;
// el;
// for (int P = a_sorted[i].se; P <= st_2; P++)
// cout << suf[P].fi << ' ' << suf[P].se, el;
// el;
// }
for (int p = st_1; p <= a_sorted[i].se; p++)
{
int np = p + k - 1;
if (np > n)
break;
// ii pre = st.get(0, p - 1);
// ii suf = st.get(np, n);
// if (a_sorted[i].fi == 5)
// cout << p - 1 << ' ' << np << ' ' << pre.fi << ' ' << pre.se << ' ' << suf.fi << ' ' << suf.se, el;
if (is_intersect(pre[p], suf[np]))
{
flag = 1;
break;
}
}
// el;
if (flag)
ans.push_back(a_sorted[i].fi);
for (int k = i; k <= j; k++)
st.update(a_sorted[k].se, n, -1);
i = j + 1;
}
cout << ans.size(), el;
for (int x : ans)
cout << x << ' ';
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CgojZGVmaW5lIGxsIGxvbmcgbG9uZyAKI2RlZmluZSBlbCBjb3V0IDw8ICdcbicKI2RlZmluZSBpaSBwYWlyPGludCwgaW50PgojZGVmaW5lIGZpIGZpcnN0IAojZGVmaW5lIHNlIHNlY29uZAoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNvbnN0IGludCBtYXhuID0gMWU1Owpjb25zdCBpbnQgSU5GID0gMWU5OwoKc3RydWN0IFNlZ21lbnRfVHJlZQp7CiAgICBpbnQgbjsKICAgIHZlY3RvcjxpaT4gdHJlZTsKICAgIHZlY3RvcjxpbnQ+IGxhenk7CgogICAgU2VnbWVudF9UcmVlKGludCBuID0gMCkgOiBuKG4pCiAgICB7CiAgICAgICAgdHJlZS5hc3NpZ24oNCAqIG4gKyAxMCwgaWkoMCwgMCkpOwogICAgICAgIGxhenkuYXNzaWduKDQgKiBuICsgMTAsIDApOwogICAgfQogICAgdm9pZCBwdXNoKGludCBpZCkKICAgIHsKICAgICAgICBpZiAobGF6eVtpZF0gPT0gMCkKICAgICAgICAgICAgcmV0dXJuIDsKICAgICAgICBmb3IgKGludCBuaWQgPSBpZCAqIDI7IG5pZCA8PSBpZCAqIDIgKyAxOyBuaWQrKykKICAgICAgICB7CiAgICAgICAgICAgIHRyZWVbbmlkXS5maSArPSBsYXp5W2lkXTsKICAgICAgICAgICAgdHJlZVtuaWRdLnNlICs9IGxhenlbaWRdOwogICAgICAgICAgICBsYXp5W25pZF0gKz0gbGF6eVtpZF07CiAgICAgICAgfQogICAgICAgIGxhenlbaWRdID0gMDsKICAgIH0KICAgIHZvaWQgdXBkYXRlKGludCBpZCwgaW50IGwsIGludCByLCBpbnQgdSwgaW50IHYsIGludCB2YWwpCiAgICB7CiAgICAgICAgaWYgKHIgPCB1IHx8IGwgPiB2KQogICAgICAgICAgICByZXR1cm4gOwogICAgICAgIGlmICh1IDw9IGwgJiYgciA8PSB2KQogICAgICAgIHsKICAgICAgICAgICAgdHJlZVtpZF0uZmkgKz0gdmFsOwogICAgICAgICAgICB0cmVlW2lkXS5zZSArPSB2YWw7CiAgICAgICAgICAgIGxhenlbaWRdICs9IHZhbDsKICAgICAgICAgICAgcmV0dXJuIDsKICAgICAgICB9CiAgICAgICAgaW50IG0gPSBsICsgciA+PiAxOwogICAgICAgIHB1c2goaWQpOwogICAgICAgIHVwZGF0ZShpZCA8PCAxLCBsLCBtLCB1LCB2LCB2YWwpOwogICAgICAgIHVwZGF0ZShpZCA8PCAxIHwgMSwgbSArIDEsIHIsIHUsIHYsIHZhbCk7CiAgICAgICAgdHJlZVtpZF0uZmkgPSBtaW4odHJlZVtpZCA8PCAxXS5maSwgdHJlZVtpZCA8PCAxIHwgMV0uZmkpOwogICAgICAgIHRyZWVbaWRdLnNlID0gbWF4KHRyZWVbaWQgPDwgMV0uc2UsIHRyZWVbaWQgPDwgMSB8IDFdLnNlKTsKICAgIH0KICAgIGlpIGdldChpbnQgaWQsIGludCBsLCBpbnQgciwgaW50IHUsIGludCB2KQogICAgewogICAgICAgIGlmIChyIDwgdSB8fCBsID4gdikKICAgICAgICAgICAgcmV0dXJuIGlpKElORiwgLUlORik7CiAgICAgICAgaWYgKHUgPD0gbCAmJiByIDw9IHYpCiAgICAgICAgICAgIHJldHVybiB0cmVlW2lkXTsKICAgICAgICBpbnQgbSA9IGwgKyByID4+IDE7CiAgICAgICAgcHVzaChpZCk7CiAgICAgICAgaWkgYSA9IGdldChpZCA8PCAxLCBsLCBtLCB1LCB2KTsKICAgICAgICBpaSBiID0gZ2V0KGlkIDw8IDEgfCAxLCBtICsgMSwgciwgdSwgdik7CiAgICAgICAgcmV0dXJuIGlpKG1pbihhLmZpLCBiLmZpKSwgbWF4KGEuc2UsIGIuc2UpKTsKICAgIH0KICAgIHZvaWQgdXBkYXRlKGludCBsLCBpbnQgciwgaW50IHYpCiAgICB7CiAgICAgICAgdXBkYXRlKDEsIDAsIG4sIGwsIHIsIHYpOwogICAgfQogICAgaWkgZ2V0KGludCBsLCBpbnQgcikKICAgIHsKICAgICAgICByZXR1cm4gZ2V0KDEsIDAsIG4sIGwsIHIpOwogICAgfQp9OwoKaW50IG4sIGs7CmxsIGFbbWF4biArIDEwXTsKaWkgYV9zb3J0ZWRbbWF4biArIDEwXSwgcHJlW21heG4gKyAxMF0sIHN1ZlttYXhuICsgMTBdOwp2ZWN0b3I8aW50PiBhbnM7ClNlZ21lbnRfVHJlZSBzdDsKCmJvb2wgaXNfaW50ZXJzZWN0KGlpIGEsIGlpIGIpCnsKICAgIGlmIChhLnNlID4gYi5zZSkKICAgICAgICBzd2FwKGEsIGIpOwogICAgcmV0dXJuIGEuc2UgPj0gYi5maTsKfQoKaW50IG1haW4oKQp7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOyBjaW4udGllKDApOyBjb3V0LnRpZSgwKTsKICAgIGlmIChmb3BlbigiTS5JTlAiLCAiciIpKQogICAgewogICAgICAgIGZyZW9wZW4oIk0uSU5QIiwgInIiLCBzdGRpbik7CiAgICAgICAgZnJlb3BlbigiTS5PVVQiLCAidyIsIHN0ZG91dCk7CiAgICB9CgogICAgY2luID4+IG4gPj4gazsKICAgIHN0ID0gU2VnbWVudF9UcmVlKG4pOwogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKQogICAgewogICAgICAgIGNpbiA+PiBhW2ldOwogICAgICAgIGFfc29ydGVkW2ldID0gaWkoYVtpXSwgaSk7CiAgICAgICAgc3QudXBkYXRlKGksIG4sIDEpOwogICAgfQogICAgc29ydChhX3NvcnRlZCArIDEsIGFfc29ydGVkICsgbiArIDEpOwogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgKQogICAgewogICAgICAgIGJvb2wgZmxhZyA9IDA7CiAgICAgICAgaW50IGogPSBpOwogICAgICAgIHdoaWxlIChqIDwgbiAmJiBhX3NvcnRlZFtpXSA9PSBhX3NvcnRlZFtqICsgMV0pCiAgICAgICAgICAgIGorKzsKICAgICAgICBmb3IgKGludCBrID0gaTsgayA8PSBqOyBrKyspCiAgICAgICAgICAgIHN0LnVwZGF0ZShhX3NvcnRlZFtrXS5zZSwgbiwgLTEpOwogICAgICAgIC8vIGlmIChhX3NvcnRlZFtpXS5maSA9PSA3KQogICAgICAgIC8vIHsKICAgICAgICAvLyAgICAgZm9yIChpbnQgaSA9IDA7IGkgPD0gbjsgaSsrKQogICAgICAgIC8vICAgICAgICAgY291dCA8PCBzdC5nZXQoaSwgaSkuZmkgPDwgJyAnOwogICAgICAgIC8vICAgICBlbDsKICAgICAgICAvLyB9CiAgICAgICAgLy8gMCAwIDEgMiAzIDQgNSA2IDcgOCA3CiAgICAgICAgaW50IHN0XzEgPSBtYXgoMSwgYV9zb3J0ZWRbaV0uc2UgLSBrICsgMSk7CiAgICAgICAgaW50IHN1bSA9IHN0LmdldChzdF8xLCBzdF8xKS5maTsKICAgICAgICBwcmVbc3RfMV0gPSBzdC5nZXQoMCwgc3RfMSAtIDEpOwogICAgICAgIGZvciAoaW50IHAgPSBzdF8xICsgMTsgcCA8PSBhX3NvcnRlZFtpXS5zZTsgcCsrKQogICAgICAgIHsKICAgICAgICAgICAgcHJlW3BdLmZpID0gbWluKHByZVtwIC0gMV0uZmksIHN1bSk7CiAgICAgICAgICAgIHByZVtwXS5zZSA9IG1heChwcmVbcCAtIDFdLnNlLCBzdW0pOwogICAgICAgICAgICBpZiAoYVtwXSA8IGFfc29ydGVkW2ldLmZpKQogICAgICAgICAgICAgICAgc3VtLS07CiAgICAgICAgICAgIGlmIChhW3BdID4gYV9zb3J0ZWRbaV0uZmkpCiAgICAgICAgICAgICAgICBzdW0rKzsKICAgICAgICB9CiAgICAgICAgaW50IHN0XzIgPSBtaW4obiwgYV9zb3J0ZWRbaV0uc2UgKyBrIC0gMSk7CiAgICAgICAgc3VtID0gc3QuZ2V0KHN0XzIgLSAxLCBzdF8yIC0gMSkuZmk7CiAgICAgICAgc3VmW3N0XzJdID0gc3QuZ2V0KHN0XzIsIG4pOwogICAgICAgIGZvciAoaW50IHAgPSBzdF8yIC0gMTsgcCA+PSBhX3NvcnRlZFtpXS5zZTsgcC0tKQogICAgICAgIHsKICAgICAgICAgICAgc3VmW3BdLmZpID0gbWluKHN1ZltwICsgMV0uZmksIHN1bSk7CiAgICAgICAgICAgIHN1ZltwXS5zZSA9IG1heChzdWZbcCArIDFdLnNlLCBzdW0pOwogICAgICAgICAgICBpZiAoYVtwXSA8IGFfc29ydGVkW2ldLmZpKQogICAgICAgICAgICAgICAgc3VtKys7CiAgICAgICAgICAgIGlmIChhW3BdID4gYV9zb3J0ZWRbaV0uZmkpCiAgICAgICAgICAgICAgICBzdW0tLTsKICAgICAgICB9CiAgICAgICAgLy8gaWYgKGFfc29ydGVkW2ldLmZpID09IDcpCiAgICAgICAgLy8gewogICAgICAgIC8vICAgICBmb3IgKGludCBQID0gc3RfMTsgUCA8PSBhX3NvcnRlZFtpXS5zZTsgUCsrKQogICAgICAgIC8vICAgICAgICAgY291dCA8PCBwcmVbUF0uZmkgPDwgJyAnIDw8IHByZVtQXS5zZSwgZWw7CiAgICAgICAgLy8gICAgIGVsOwogICAgICAgIC8vICAgICBmb3IgKGludCBQID0gYV9zb3J0ZWRbaV0uc2U7IFAgPD0gc3RfMjsgUCsrKQogICAgICAgIC8vICAgICAgICAgY291dCA8PCBzdWZbUF0uZmkgPDwgJyAnIDw8IHN1ZltQXS5zZSwgZWw7CiAgICAgICAgLy8gICAgIGVsOwogICAgICAgIC8vIH0KICAgICAgICBmb3IgKGludCBwID0gc3RfMTsgcCA8PSBhX3NvcnRlZFtpXS5zZTsgcCsrKQogICAgICAgIHsKICAgICAgICAgICAgaW50IG5wID0gcCArIGsgLSAxOwogICAgICAgICAgICBpZiAobnAgPiBuKQogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIC8vIGlpIHByZSA9IHN0LmdldCgwLCBwIC0gMSk7CiAgICAgICAgICAgIC8vIGlpIHN1ZiA9IHN0LmdldChucCwgbik7CiAgICAgICAgICAgIC8vIGlmIChhX3NvcnRlZFtpXS5maSA9PSA1KQogICAgICAgICAgICAvLyAgICAgY291dCA8PCBwIC0gMSA8PCAnICcgPDwgbnAgPDwgJyAnIDw8IHByZS5maSA8PCAnICcgPDwgcHJlLnNlIDw8ICcgJyA8PCBzdWYuZmkgPDwgJyAnIDw8IHN1Zi5zZSwgZWw7CiAgICAgICAgICAgIGlmIChpc19pbnRlcnNlY3QocHJlW3BdLCBzdWZbbnBdKSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgZmxhZyA9IDE7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAvLyBlbDsKICAgICAgICBpZiAoZmxhZykKICAgICAgICAgICAgYW5zLnB1c2hfYmFjayhhX3NvcnRlZFtpXS5maSk7CiAgICAgICAgZm9yIChpbnQgayA9IGk7IGsgPD0gajsgaysrKQogICAgICAgICAgICBzdC51cGRhdGUoYV9zb3J0ZWRba10uc2UsIG4sIC0xKTsKICAgICAgICBpID0gaiArIDE7CiAgICB9CiAgICBjb3V0IDw8IGFucy5zaXplKCksIGVsOwogICAgZm9yIChpbnQgeCA6IGFucykKICAgICAgICBjb3V0IDw8IHggPDwgJyAnOwp9