#include using namespace std; struct stuff { int top; }; int main() { int n, m; char a[505][505]; stuff dp[505][505]; cin >> n >> m; for (int i = 1; i <= n; ++i) for (int j = 1; j <= m; ++j) cin >> a[i][j]; int max_global = 0; for (int i = 1; i <= n; ++i) { for (int j = m; j >= 1; --j) { if (a[i][j] == '0') { dp[i][j].top = 0; } else { dp[i][j].top = dp[i-1][j].top + 1; if (dp[i][j].top > 1) { int max_u = 0; for (int k = j + 1; k <= m; ++k) { if (a[i][k] == '0') break; if (dp[i][k].top > 1) max_u = max(max_u, dp[i][j].top + k - j + 1 + dp[i][k].top - 2); } max_global = max(max_u, max_global); } } } } cout << max_global << '\n'; return 0; }