#include <iostream>

using namespace std;

int mergeN(int a[], int l, int d, int sred)
{
    int n1=sred-l+1;
    int n2=d-sred;
    int c[n1], b[n2];
    for(int i=0; i<n1; i++)
        c[i]=a[l+i];
    for(int j=0; j<n2; j++)
        b[j]=a[sred+1+j];
    int i=0, k=l, j=0;
    while(i<n1 && j<n2)
    {
        if(c[i]<=b[j])
        {
            a[k]=c[i];
            k++;
            i++;
        }
        else
        {
            a[k]=b[j];
            k++;
            j++;
        }
    }
    while(i<n1)
    {
        a[k]=c[i];
        k++;
        i++;
    }
    while(j<n2)
    {
        a[k]=b[j];
        k++;
        j++;
    }
}

void mergeSort(int a[], int l, int d)
{
    if(l<d)
    {
        int sred=l+(d-l)/2;
        mergeSort(a,l,sred);
        mergeSort(a,sred+1,d);
        mergeN(a,l,d,sred);
    }
}

int main()
{
    int n,k;
    cin>>n>>k;
    int a[n];
    for(int i=0; i<n; i++)
        cin>>a[i];
    mergeSort(a,0,n-1);
    int br=1, d=0, element=a[0];
    int b[n];
    for(int i=1; i<=n; i++)
    {
        if(element==a[i])
            br++;
        else
        {
            if(br>=k)
            {
                b[d]=element;
                d++;
            }
            element=a[i];
            br=1;
        }
    }
    cout<<d<<endl;
    for(int i=0; i<d; i++)
        cout<<b[i]<<" ";
}