#include <iostream>
using namespace std;

int uporedi(const void* a, const void* b)
{
	const int* x = (int*) a;
	const int* y = (int*) b;
	if (*x > *y)
		return 1;
	else if (*x < *y)
		return -1;
	return 0;
}



int main(){
	
	int n,k,y=0,z=0,x=1;
	cin>>n>>k;
	int a[n];
	
	for(int i=0;i<n;i++)
		cin>>a[i];
		
	qsort(a,n,sizeof(int),uporedi);
	int b[n/k];
	
	for(int i=0;i<n;i++){
		if(a[i]==a[i+1]){
			x++;
			if(x==k){
				y++;
				b[z]=a[i];
				z++;
			}		
		}
		else{
			x=1;
		}			
	}
	
	cout<<y<<endl;
	
	for(int i=0;i<y;i++)
		cout<<b[i]<<" ";
	
	
	
	return 0;
}