#include #include #include #include using namespace std; typedef vector VI; typedef vector VVI; int main(){ int n,m; cin>>n>>m; vector input(n); for(int i=0;i>input[i]; VVI mat(n+2,VI(m+2,0)); for(int i=0;i=1;--j) if(mat[i][j]){ int m=0; if(up[i][j+1]>1) m=max(m,up[i][j+1]); m=max(m,riup[i][j+1]); if(m>0) riup[i][j]=1+m; } VVI doriup(n+2,VI(m+2,0)); for(int i=n;i>=1;--i) for(int j=1;j<=m;++j) if(mat[i][j]){ int m=0; if(riup[i+1][j]) m=max(m,riup[i+1][j]); if(doriup[i+1][j]) m=max(m,doriup[i+1][j]); if(m>0) doriup[i][j]=1+m; } int mx=0; for(int i=1;i<=n;++i) for(int j=1;j<=m; ++j) mx=max(mx,doriup[i][j]); cout<