#include<iostream>
using namespace std;
int drop[1001];
int dp[1001][31];
int max(int a, int b) { return a>b?a:b; }
int min(int a, int b) { return a<b?a:b; }
int main()
{
int T, W;
cin>>T>>W;
for(int i=1; i<=T; i++)
cin>>drop[i];
if(drop[1]==1) dp[1][0]=1;
else dp[1][1]=1;
for(int i=1; i<=T; i++)
for(int j=0; j<=W; j++)
{
if(j==0){ dp[i][j]=dp[i-1][j]+drop[i]%2; continue; }
dp[i][j]=max(dp[i-1][j],dp[i-1][j-1]);
if(j%2+1==drop[i])dp[i][j]++;
}
int m=0;
for(int i=0; i<=W; i++)
if(dp[T][i]>m)m=dp[T][i];
cout<<m<<endl;
return 0;
}

]]>