#include <stdio.h>
#include <queue>
#define MAX 1000000

using namespace std;

int n, k;
int br = 0;
int niz[MAX];
int pomNiz[MAX];
int a[MAX];

void setNiz(int n)
{
    int i = 0;
    int j = 2*n;
    int pom = n;
    while(i < n && j > n)
    {
        niz[i++] = -pom;
        niz[j--] = pom;
        --pom;
    }
}

int binarnaPretraga(int niz[], int l, int r, int elem)
{
    while (l <= r)
    {
        int s = l + (r - l) / 2;

        if (niz[s] == elem){
            return s;
        }
        if (niz[s] < elem){
            l = s + 1;
        }
        else{
            r = s - 1;
        }
    }
}

void setPomNiz(int n)
{
    int index = 0;
    for(int i = 0; i < n; ++i)
    {
        index = binarnaPretraga(niz, 0, 2*n, a[i]);
        pomNiz[index] += 1;
    }
}

void pronadji(int n, int k)
{
    queue <int> red;
    for(int i = 0; i <= 2*n; ++i)
    {
        if(pomNiz[i] >= k)
        {
            ++br;
            red.push(niz[i]);
        }
    }

    printf("%i\n", br);
    while (!red.empty())
    {
        printf("%i ", red.front());
        red.pop();
    }
}

int main()
{
    int i = 0;
    scanf("%i %i", &n, &k);
    setNiz(n);
    for(i = 0; i < n; ++i)
    {
        scanf("%i", &a[i]);
    }
    setPomNiz(n);
    pronadji(n, k);

}