#include #include #include #include #define NM 505 using namespace std; vector> v(NM); int d[NM][NM], r[NM][NM], u[NM][NM]; int n, m; int main() { cin >> n >> m; string s; getline(cin, s); for(int i = 1; i <= n; ++i) { getline(cin, s); for(int j = 0; j < m; ++j) v[i][j+1] = s[j]-'0'; } for(int i = 1; i <= n; ++i) for(int j = 1; j <= m; ++j) if(v[i][j] == 1) { d[i][j] = d[i-1][j]+1; if(d[i][j-1] || r[i][j-1]) r[i][j] = max(d[i][j-1], r[i][j-1])+1; } int mx = 0; for(int i = n; i; --i) for(int j = m; j; --j) if(v[i][j] == 1) { if(r[i+1][j] || u[i+1][j]) u[i][j] = max(r[i+1][j], u[i+1][j])+1; mx = max(mx, u[i][j]); } cout << mx; }