#include <stdio.h>
long long a[1000000],b[1000000],c[1000000],n,m,o,l,K,br;
void Unos(long long a[],long long n){
  for(long long i=0;i<n;i++)scanf("%lld",&a[i]);
}
void merge(long long arr[], long long l, long long s, long long d) 
{ 
    long long i, j, k; 
    long long n1 = s - l + 1; 
    long long n2 =  d - s; 
  
    long long L[n1], D[n2]; 
    for (i = 0; i < n1; i++) 
        L[i] = arr[l + i]; 
    for (j = 0; j < n2; j++) 
        D[j] = arr[s + 1+ j]; 

    i = 0; 
    j = 0;  
    k = l; 
    while (i < n1 && j < n2) 
    { 
        if (L[i] <= D[j]) 
        { 
            arr[k] = L[i]; 
            i++; 
        } 
        else
        { 
            arr[k] = D[j]; 
            j++; 
        } 
        k++; 
    } 
    while (i < n1) 
    { 
        arr[k] = L[i]; 
        i++; 
        k++; 
    } 
    while (j < n2) 
    { 
        arr[k] = D[j]; 
        j++; 
        k++; 
    } 
} 
  
void MergeSort(long long arr[], long long l, long long d) 
{ 
    if (l < d) 
    { 
        long long s = l+(d-l)/2; 
  
        MergeSort(arr, l, s); 
        MergeSort(arr, s+1, d); 
  
        merge(arr, l, s, d); 
    } 
} 
void Visak(long long a[],long long n,long long b[],long long *m){
    int i;
    for(i=0;i<n;i++){
      if(a[i]!=a[i+1]){
        b[*m]=a[i];
        (*m)++;
    }
      else {
        b[*m]=a[i+1];
        (*m)++;
        i++;
      }

}
}
void Ispis(long long a[],long long n){
  for(int i=0;i<n;i++)printf("%lld ",a[i]);
}


int main() {
  
scanf("%lld%lld",&n,&K);
Unos(a,n);
MergeSort(a, 0, n-1);
//Prolaz(a,n,b,&m,&br,K);
m=0;br=0;long long i=0;
if(K>1){
  while(i<n-1){
      if(i==n-2){
        if(a[i]==a[i+1])br++;
        if(br>=K){
      b[m]=a[i];
      (m)++;
        }
    }
     if(a[i]==a[i+1]){
      (br)++;
     
    }
     if(a[i]!=a[i+1]){
      if(br>=K-1){
        b[m]=a[i-1];
        (m)++;
        
      }
      else br=0;
    }
     i++;
    }

  }
  else{
    for(int i=0;i<n;i++){
      b[m]=a[i];
      (m)++;
      }
  }
MergeSort(b, 0, m-1);
Visak(b,m,c,&o);
printf("%lld\n",o);
Ispis(c,o);

}