#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main()
{
	long long int n,k,br=0,br0,i;                 //br je brojac koliko polja treba zameniti

	scanf("%lld %lld", &n,&k);

	long long int a[n],vp[n],vm[n],zameniti[n];
	for(i = 0; i<n; i++)        			  //Gde je bacio; a niz predstavlja pogodjena polja
	{
		scanf("%lld", &a[i]);
		vp[i] = k;							  //vp niz predstavlja vrednost, odnosno HP pozitivnih polja (vp[0] je polje 1)
		vm[i] = k;							  //vm niz predstavlja vrednost, odnosno HP negativnih polja (vm[0] je polje 1)
	}
											  
	br0=k;									  //br0 predstavlja HP nultog polja

	for(i = 0; i<n; i++)
	{
		if(a[i] == 0)
			br0-=1;
		else if(a[i] > 0)
			vp[a[i]-1]-=1;
		else if(a[i] < 0)
			vm[abs(a[i])-1]-=1;
	}

	for(i = 0; i<n; i++)
	{
		if (vp[i]<=0)
			br++;
		if (vm[i]<=0)
			br++;
	}
	if (br0<=0)
		br++;

	printf("%lld\n", br);

	for(i = 0; i<n; i++)
	{
		if (vp[i]<=0)
			printf("%lld ", i+1);
		if (vm[i]<=0)
			printf("%lld ", -(i+1));
	}
	if(br0<=0)
		printf("0 ");

	/*
	//DEBUG
	printf("\n\n");
	printf("%lld\n", br0);
	for(i = 0; i<n; i++)
	{
		printf("%lld ", vp[i]);
	}
	printf("\n");
	for(i = 0; i<n; i++)
	{
		printf("%lld ", vm[i]);
	}
	*/
	return 0;
}