#include<bits/stdc++.h>
#define MAX 1000000001
using namespace std;
bitset<MAX> bs;
void print_reversed_queue(queue<int> * q);
int main(){
int n,
k,
aux;
queue<int> messages;
scanf ("%d%d", &n, &k);
while (n--){
scanf("%d", &aux);
if (!bs[aux]){
if (messages.size() == k){
bs[messages.front()] = 0;
messages.pop();
}
bs[aux] = 1;
messages.push(aux);
}
}
printf("%d\n", int(messages.size()));
print_reversed_queue(&messages);
return 0;
}
void print_reversed_queue(queue<int> * q){
if (q->size() > 0){
int f = q->front();
q->pop();
print_reversed_queue(q);
printf("%d ", f);
}
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KCiNkZWZpbmUgTUFYIDEwMDAwMDAwMDEKCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpiaXRzZXQ8TUFYPiBiczsKCnZvaWQgcHJpbnRfcmV2ZXJzZWRfcXVldWUocXVldWU8aW50PiAqIHEpOwoKaW50IG1haW4oKXsKICBpbnQgbiwKICAgICAgaywKICAgICAgYXV4OwogIHF1ZXVlPGludD4gbWVzc2FnZXM7CiAgc2NhbmYgKCIlZCVkIiwgJm4sICZrKTsKICB3aGlsZSAobi0tKXsKICAgIHNjYW5mKCIlZCIsICZhdXgpOwogICAgaWYgKCFic1thdXhdKXsKICAgICAgaWYgKG1lc3NhZ2VzLnNpemUoKSA9PSBrKXsKICAgICAgICBic1ttZXNzYWdlcy5mcm9udCgpXSA9IDA7CiAgICAgICAgbWVzc2FnZXMucG9wKCk7CiAgICAgIH0KICAgICAgYnNbYXV4XSA9IDE7CiAgICAgIG1lc3NhZ2VzLnB1c2goYXV4KTsKICAgIH0KICB9CiAgcHJpbnRmKCIlZFxuIiwgaW50KG1lc3NhZ2VzLnNpemUoKSkpOwogIHByaW50X3JldmVyc2VkX3F1ZXVlKCZtZXNzYWdlcyk7CiAgcmV0dXJuIDA7Cn0KCnZvaWQgcHJpbnRfcmV2ZXJzZWRfcXVldWUocXVldWU8aW50PiAqIHEpewogIGlmIChxLT5zaXplKCkgPiAwKXsKICAgIGludCBmID0gcS0+ZnJvbnQoKTsKICAgIHEtPnBvcCgpOwogICAgcHJpbnRfcmV2ZXJzZWRfcXVldWUocSk7CiAgICBwcmludGYoIiVkICIsIGYpOwogIH0KfQo=