#include <iostream>
#include <stdio.h>

using namespace std;


void swap(int* a, int* b)
{
	int t = *a;
	*a = *b;
	*b = t;
}

int partition(int arr[], int low, int high)
{
	int pivot = arr[high];
	int i = (low - 1); 

	for (int j = low; j <= high - 1; j++)
	{
		if (arr[j] <= pivot)
		{
			i++;
			swap(&arr[i], &arr[j]);
		}
	}
	swap(&arr[i + 1], &arr[high]);
	return (i + 1);
}

void quickSort(int arr[], int low, int high)
{
	if (low < high)
	{
		int pi = partition(arr, low, high);

		quickSort(arr, low, pi - 1);
		quickSort(arr, pi + 1, high);
	}
}

int main()
{
	long long int N = 0;
	long long int K = 0;
	int arr[100000];
	int zamena[100000];
	int zamenjivanje = 0;
	cin >> N >> K;
	for (int i = 0; i < N; i++)
	{
		cin >> arr[i];
	}

	quickSort(arr, 0, N);

	for (int i = 0; i < N; i++)
	{
		int counter = 0;
		if (arr[i] == arr[i + 1])
		{
			counter = 2;
			i++;
			while (arr[i] == arr[i + 1])
			{
				counter++;
				i++;
			}
			if (counter >= K)
			{
				zamena[zamenjivanje] = arr[i];
				zamenjivanje++;
			}
		}
	}

	cout << zamenjivanje << endl;
	for (int i = 0; i < zamenjivanje; i++)
	{
		cout << zamena[i] << " ";
	}
}