using System;
					
public class Program
{
	public static void Main()
	{
		
		int brojSlomljenihPolja = 0;
            
            string[] ulaz1 = Console.ReadLine().Split( );        //citanje ulaza 1 (n i k)
            int n = Convert.ToInt32(ulaz1[0]);
            int k = Convert.ToInt32(ulaz1[1]);

            

            string[] ulaz2 = Console.ReadLine().Split();        //citanje ulaza2 (brojevi)
            int[] pogodci = new int[n];

            for(int i = 0; i<n; i++){                           //pretvaranje string u int
                pogodci[i] = Convert.ToInt32(ulaz2[i]);

            }

            int[] polja = new int[2 * n + 1];                   //polja

            for (int i = 0; i < 2 * n + 1; i++){                //definisanje durability polja
                polja[i] = k;
            }

            for (int i = 0; i <n; i++){                         //smanjivanje durability polja
                polja[pogodci[i] + n] = polja[pogodci[i] + n] - 1;
            }


            int[] slomljenaPolja = new int[2 * n + 1];
            

            for (int i = 0; i < 2 * n + 1; i++){
                if (polja[i] <= 0){

                    slomljenaPolja[brojSlomljenihPolja] = i -n;
                    brojSlomljenihPolja = brojSlomljenihPolja + 1;

                }
            }
            Console.WriteLine(brojSlomljenihPolja);

            for (int i = 0; i < brojSlomljenihPolja; i++){
                if (i == 0)
                {
                    Console.Write(slomljenaPolja[i]);
                }
                else
                {
                    Console.Write(" " + slomljenaPolja[i]);
                }
            }
	}
}