#include<bits/stdc++.h>
using namespace std;
int n,m,i,j,ans,p;
int a[1000005],b[1000005];
std::map<int,int>s;
int main(){
scanf("%d%d",&n,&m);
for(i=1;i<=n;i++) scanf("%d",&a[i]);
if(m==0){
for(i=1;i<=n;i++){
if(a[i]) ans++,b[i]=0;
}
printf("%d\n",ans);
for(i=1;i<=n;i++) printf("%d ",b[i]);
return 0;
}
for(i=1;i<=n;i++){
if(s[a[i]]==0 && a[i]<m) p++,s[a[i]]=1;
if(p==m){
ans++;
b[i]=m;
s.clear(),p=0;
}
else b[i]=a[i];
}
printf("%d\n",ans);
for(i=1;i<=n;i++) printf("%d ",b[i]);
return 0;
}
用了 map,求调。