#include <stdio.h>
#include <time.h>
#include <memory.h>

const int maxn = 1100000;

int a[maxn],ozn[maxn],d[maxn];

int main()
{
    int start = clock();
    freopen("podniz.in","r",stdin);
    freopen("podniz.out","w",stdout);
    
    int n,m;
    scanf("%d%d",&n,&m);
    
    int i,j,k,t;
      
    for(i= 0;i<m;i++)
    {
       scanf("%d",&(a[i]));
       a[i]--;
    }
    memset(ozn,0,n*sizeof(ozn[0]));
    
    k = 1; t = 0;
    for(i = m-1;i>=0;i--)
    {
        d[i] = k; 
        if (ozn[a[i]]==0)
        {
            ozn[a[i]] = 1;
            t++;
            if (t==n)
            {               
               memset(ozn,0,n*sizeof(ozn[0]));
               t=0;
               k++;
            }            
        }     
    }
    
    int res = k;
    printf("%d\n",res);
    
    memset(ozn,0,n*sizeof(ozn[0]));
    for(i = 0;i<m;i++)
    {
       if (d[i]!=k)
       {
           for (j = 0;(j<n)&&(ozn[j]);j++);
           printf("%d\n",j+1);
           k--;
           if (k==0) break;
           for (;(i<m)&&(j!=a[i]);i++);
           memset(ozn,0,n*sizeof(ozn[0]));         
       }                 
       else ozn[a[i]]=1; 
    }
    
    if (k==1) 
    {
       for (j = 0;(j<n)&&(ozn[j]);j++);
       printf("%d\n",j+1);
    }        
        
    return 0;   
}
