using System;

namespace prvi
{
    class Program
    {
        static void print<T>(T[] niz)
        {
            int l = niz.Length;

            for (int i = 0; i < l; i++)
            {
                Console.Write("{0} ", niz[i]);
            }
            Console.WriteLine();
        }

        static void count(int[] niz, int limit)
        {
            int l = niz.Length;
            int ind = 0;
            int[] zamena = new int[l+1];
            int[] ponovljen = new int[l];


            for (int i = 0; i < l; i++) ponovljen[i] = 0;

            for (int i = 0; i < l; i++)
            {
                if (ponovljen[i] == 0)
                {
                    int br = 0;
                    for (int j = 0; j < l; j++)
                    {
                        if (niz[i] == niz[j])
                        {
                            br++;
                            ponovljen[j] = 1;
                        }
                    }
                    //Console.WriteLine("{0}:{1}", niz[i], br);
                    if(br >= limit)
                    {
                        zamena[ind++] = niz[i];
                    }
                        
                }
            }
            Array.Resize(ref zamena, ind);
            Console.WriteLine(ind);
            print(zamena);
                        
        }

        static void Main(string[] args)
        {
            string[] unos = Console.ReadLine().Split();
            int gadanja = int.Parse(unos[0]);
            int limit = int.Parse(unos[1]);

            int[] pogodenaPolja = new int[gadanja];
            string[] unos1 = Console.ReadLine().Split();

            //parse int 
            for(int i = 0; i < gadanja; i++)
            {
                pogodenaPolja[i] = int.Parse(unos1[i]);
            }

            count(pogodenaPolja, limit);
        }
    }
}