#include <bits/stdc++.h>

using namespace std;

struct polje{
    int br;
    int brp;
};

int n,k,a,res, r[1000005],t=1;

polje neg[1000005];
polje poz[1000005];

void niz(){

    poz[0].br = 0;

    for(int i=1; i<=n; i++){
        poz[i].br = i;
        neg[i].br = i;
    }
}

int main(){

    scanf("%d%d", &n, &k);

    niz();

    for(int i=1; i<=n; i++){

        scanf("%d", &a);

        if(a < 0){
            a = a*(-1);
            neg[a].brp++;
        }
        else poz[a].brp++;

    }

    for(int i=1; i<=n; i++){
        if(neg[i].brp >= k){
            res++;
            r[t] = i * (-1);
            t++;
        }
        if(poz[i].brp >= k){
            res++;
            r[t] = i;
            t++;
        }
    }

    if(poz[0].brp >= k){
        res++;
        r[t] = 0;
    }

    printf("%d\n", res);

    for(int i=1; i<t; i++){
        printf("%d ", r[i]);
    }

 return 0;
}