#include using namespace std; int maxi, N, M, up[509][509]; char sir[509][509]; int pow (int a, int b, int mod) { int p = 1; for (int i=0; (1< maxi) maxi = up[i][j] + j + bst - 1; if (up[i][j] - j > bst) bst = up[i][j] - j; } } int main() { //freopen ("input", "r", stdin); //freopen ("output", "w", stdout); scanf ("%d %d\n", &N, &M); for (int i=1; i<=N; i++) gets (sir[i] + 1); for (int i=1; i<=N; i++) { for (int j=1; j<=M; j++) if (sir[i][j] == '0') up[i][j] = 0; else up[i][j] = up[i - 1][j] + 1; for (int j=1; j<=M; j++) if (sir[i][j] == '1') { int k=j; for (k=j; k<=M; k++) if (sir[i][k] == '0') break; k --; Try (i, j, k), j = k; } } printf ("%d\n", maxi); return 0; }