// ROOT : DRAGON3012009
#include <bits/stdc++.h>
#define ll int
#define el "\n"
#define fast ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define __ROOT__ int main()
#pragma GCC optimize("O2")
#define FOR(i,l,r) for(int i = l ; i <= r ; i ++)
#define FORD(i,r,l) for(int i = r ; i >= l ; i --)
#define compare(v) sort((v).begin(), (v).end()), (v).erase(unique((v).begin(), (v).end()), (v).end());
using namespace std;
const int LOG = 30;
const int MAXN = 1000001;
ll n, k;
ll arr[MAXN];
struct Node {
Node *child[2];
ll cnt, exit;
Node() {
child[0] = child[1] = nullptr;
cnt = exit = 0;
}
};
Node *root;
void add(ll x) {
Node *p = root;
FORD(i, LOG, 0) {
ll t = (x >> i) & 1;
if(p->child[t] == nullptr) p->child[t] = new Node();
p = p->child[t];
p->cnt++;
}
p->exit++;
}
void del(ll x) {
Node *p = root;
FORD(i, LOG, 0) {
ll t = (x >> i) & 1;
if(p->child[t] == nullptr) return; // không có gì để xóa
p = p->child[t];
p->cnt--;
}
p->exit--;
}
ll query_k(ll k) { // tìm phần tử nhỏ thứ k
ll res = 0;
Node *p = root;
FORD(i, LOG, 0) {
if(!p) break;
ll leftt = p->child[0] ? p->child[0]->cnt : 0;
if(k > leftt) {
k -= leftt;
res |= (1 << i);
p = p->child[1];
} else {
p = p->child[0];
}
}
return res;
}
void init() {
cin >> n >> k;
FOR(i,1,n) cin >> arr[i];
}
vector<ll> res;
void solve() {
FOR(len, k, n) {
if(len % 2 == 0) continue;
root = new Node();
ll l = 1;
FOR(i, 1, n) {
add(arr[i]);
while(i - l + 1 > len) del(arr[l++]);
if(i - l + 1 == len)
res.push_back(query_k(len/2 + 1));
}
}
compare(res);
cout << res.size() << el;
for(ll v: res) cout << v << " ";
}
__ROOT__ {
fast;
int t = 1; // cin >> t;
while(t--) {
init();
solve();
}
return 0;
}
Ly8gUk9PVCA6IERSQUdPTjMwMTIwMDkKI2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgbGwgaW50CiNkZWZpbmUgZWwgIlxuIgojZGVmaW5lIGZhc3QgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTsgY2luLnRpZSgwKTsgY291dC50aWUoMCk7CiNkZWZpbmUgX19ST09UX18gaW50IG1haW4oKQojcHJhZ21hIEdDQyBvcHRpbWl6ZSgiTzIiKQojZGVmaW5lIEZPUihpLGwscikgZm9yKGludCBpID0gbCA7IGkgPD0gciA7IGkgKyspCiNkZWZpbmUgRk9SRChpLHIsbCkgZm9yKGludCBpID0gciA7IGkgPj0gbCA7IGkgLS0pCiNkZWZpbmUgY29tcGFyZSh2KSBzb3J0KCh2KS5iZWdpbigpLCAodikuZW5kKCkpLCAodikuZXJhc2UodW5pcXVlKCh2KS5iZWdpbigpLCAodikuZW5kKCkpLCAodikuZW5kKCkpOwp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY29uc3QgaW50IExPRyA9IDMwOwpjb25zdCBpbnQgTUFYTiA9IDEwMDAwMDE7CgpsbCBuLCBrOwpsbCBhcnJbTUFYTl07CgpzdHJ1Y3QgTm9kZSB7CiAgICBOb2RlICpjaGlsZFsyXTsKICAgIGxsIGNudCwgZXhpdDsKICAgIE5vZGUoKSB7CiAgICAgICAgY2hpbGRbMF0gPSBjaGlsZFsxXSA9IG51bGxwdHI7CiAgICAgICAgY250ID0gZXhpdCA9IDA7CiAgICB9Cn07Ck5vZGUgKnJvb3Q7Cgp2b2lkIGFkZChsbCB4KSB7CiAgICBOb2RlICpwID0gcm9vdDsKICAgIEZPUkQoaSwgTE9HLCAwKSB7CiAgICAgICAgbGwgdCA9ICh4ID4+IGkpICYgMTsKICAgICAgICBpZihwLT5jaGlsZFt0XSA9PSBudWxscHRyKSBwLT5jaGlsZFt0XSA9IG5ldyBOb2RlKCk7CiAgICAgICAgcCA9IHAtPmNoaWxkW3RdOwogICAgICAgIHAtPmNudCsrOwogICAgfQogICAgcC0+ZXhpdCsrOwp9Cgp2b2lkIGRlbChsbCB4KSB7CiAgICBOb2RlICpwID0gcm9vdDsKICAgIEZPUkQoaSwgTE9HLCAwKSB7CiAgICAgICAgbGwgdCA9ICh4ID4+IGkpICYgMTsKICAgICAgICBpZihwLT5jaGlsZFt0XSA9PSBudWxscHRyKSByZXR1cm47IC8vIGtow7RuZyBjw7MgZ8OsIMSR4buDIHjDs2EKICAgICAgICBwID0gcC0+Y2hpbGRbdF07CiAgICAgICAgcC0+Y250LS07CiAgICB9CiAgICBwLT5leGl0LS07Cn0KCmxsIHF1ZXJ5X2sobGwgaykgeyAvLyB0w6xtIHBo4bqnbiB04butIG5o4buPIHRo4bupIGsKICAgIGxsIHJlcyA9IDA7CiAgICBOb2RlICpwID0gcm9vdDsKICAgIEZPUkQoaSwgTE9HLCAwKSB7CiAgICAgICAgaWYoIXApIGJyZWFrOwogICAgICAgIGxsIGxlZnR0ID0gcC0+Y2hpbGRbMF0gPyBwLT5jaGlsZFswXS0+Y250IDogMDsKICAgICAgICBpZihrID4gbGVmdHQpIHsKICAgICAgICAgICAgayAtPSBsZWZ0dDsKICAgICAgICAgICAgcmVzIHw9ICgxIDw8IGkpOwogICAgICAgICAgICBwID0gcC0+Y2hpbGRbMV07CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcCA9IHAtPmNoaWxkWzBdOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiByZXM7Cn0KCnZvaWQgaW5pdCgpIHsKICAgIGNpbiA+PiBuID4+IGs7CiAgICBGT1IoaSwxLG4pIGNpbiA+PiBhcnJbaV07Cn0KCnZlY3RvcjxsbD4gcmVzOwoKdm9pZCBzb2x2ZSgpIHsKICAgIEZPUihsZW4sIGssIG4pIHsKICAgICAgICBpZihsZW4gJSAyID09IDApIGNvbnRpbnVlOwogICAgICAgIHJvb3QgPSBuZXcgTm9kZSgpOyAKICAgICAgICBsbCBsID0gMTsKICAgICAgICBGT1IoaSwgMSwgbikgewogICAgICAgICAgICBhZGQoYXJyW2ldKTsKICAgICAgICAgICAgd2hpbGUoaSAtIGwgKyAxID4gbGVuKSBkZWwoYXJyW2wrK10pOwogICAgICAgICAgICBpZihpIC0gbCArIDEgPT0gbGVuKQogICAgICAgICAgICAgICAgcmVzLnB1c2hfYmFjayhxdWVyeV9rKGxlbi8yICsgMSkpOwogICAgICAgIH0KICAgIH0KICAgIGNvbXBhcmUocmVzKTsKICAgIGNvdXQgPDwgcmVzLnNpemUoKSA8PCBlbDsKICAgIGZvcihsbCB2OiByZXMpIGNvdXQgPDwgdiA8PCAiICI7Cn0KCl9fUk9PVF9fIHsKICAgIGZhc3Q7CiAgICBpbnQgdCA9IDE7IC8vIGNpbiA+PiB0OwogICAgd2hpbGUodC0tKSB7CiAgICAgICAgaW5pdCgpOwogICAgICAgIHNvbHZlKCk7CiAgICB9CiAgICByZXR1cm4gMDsKfQo=