#include <bits/stdc++.h>

using namespace std;

struct polje{
    int broj;
    int ponavljanje;
};

bool sortiraj(polje a, polje b){
    return (a.ponavljanje > b.ponavljanje)?true:false;
}

void resi(int a[], int n, int k){
    int najm = *min_element(a, a + n), najv = *max_element(a, a + n);
    int p = najv - najm + 1;
    polje pom[p] = {0, 0};
    int t = 0, resenje[n];
    for(int i = 0;i < n;i++){
        pom[a[i] - najm].broj = a[i];
        pom[a[i] - najm].ponavljanje++;
    }
    sort(pom, pom + p, sortiraj);
    for(int i = 0;i < p;i++){
        if(pom[i].ponavljanje >= k){
            resenje[t] = pom[i].broj;
            t++;
        }
        else
            break;
    }
    sort(resenje, resenje + n);
    cout << t << '\n';
    for(int i = 0;i < t;i++)
        cout << resenje[i] << " ";
}

int main(){
    ios::sync_with_stdio(false);
    int n, k;
    cin >> n >> k;
    int a[n];
    for(int i = 0;i < n;i++) cin >> a[i];
    resi(a, n, k);
    return 0;
}