#include<stdio.h>
int main ()
{
int len,n;
scanf("%d%d",&len,&n);
int sum[len],tt=0;
int aa[len];
for(int i=0;i<len;i++)
{
scanf("%d",&aa[i]);
tt+=aa[i];
sum[i]=tt;
}
if(len==1)
{
printf("%d\n",1);
printf("%d\n",sum[0]);
}
else
{
int l=0,r=0,max=0,lift=0,right=0;
while(r<len)
{//长度—1的个数=0的个数>可交换数量
if((r-l+1)-(sum[r]-sum[l]+aa[l])>n)
{l++;
if(l>r)
r=l;
}
else
{
if(max<(r-l+1))
{
max=(r-l+1);
right=r;
lift=l;
}
//右标右移
r++;
}
}
//控制输出格式
printf("%d\n",max);
for(int i=0;i<len;i++)
if(i==len-1)
printf("%d",aa[i]);
else
{
if(i>=lift&&i<=right)
printf("%d ",1);
else
printf("%d ",aa[i]);
}
}
}