http://oj.ecustacm.cn/problem.php?id=1771
'''
f[i][j][k]从前i局中变换j次,当前出的是k,赢的次数
if (k==3 and a[i]==1) or (k<a[i]) :
f[i][j][k]=max(f[i-1][j][k],f[i-1][j-1][(k+1)%3+1],f[i-1][j-1][(k+2)%3+1])+1
else:
f[i][j][k]=max(f[i-1][j][k],f[i-1][j-1][(k+1)%3+1],f[i-1][j-1][(k+2)%3+1])
'''
n,m=map(int,input().split())
a=[0]+list(map(int,input().split()))
f=[[[0]*4 for i in range(m+1)] for i in range(2)]
for i in range(1,n+1):
for j in range(1,m+1):
for k in range(1,4):
if (k == 3 and a[i] == 1) or (k < a[i]):
f[i%2][j][k] = max(f[(i - 1)%2][j][k], f[(i - 1)%2][j - 1][(k + 1) % 3 + 1], f[(i - 1)%2][j - 1][(k + 2) % 3 + 1]) + 1
else:
f[i%2][j][k] = max(f[(i - 1)%2][j][k], f[(i - 1)%2][j - 1][(k + 1) % 3 + 1], f[(i - 1)%2][j - 1][(k + 2) % 3 + 1])
res=0
for i in range(m+1):res=max(res,max(f[n%2][i]))
print(res)