//指针j对于指针i具有单调性(i变大,j只能变大或是不变)所以可以用双指针
#include<bits/stdc++.h>
using namespace std;
const int N = 3e5+10;
int g[N];
int n,m;
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
cin>>g[i];
int len=0,r;//len存储区间长度,r标记最大区间的右指针
for(int i=1,j=1,zeros=0;i<=n;i++)
{
if(!g[i])zeros++;
while(zeros>m)//当当前区间的0的个数超过可放的棋子的个数时
{
if(!g[j])zeros--;
j++;
}
if(i-j+1>len)len=i-j+1,r=i;//i-j+1>=1
}
cout<<len<<endl;
for(int i=r;i>r-len;i--)
g[i]=1;
for(int i=1;i<=n;i++)
cout<<g[i]<<' ';
}