#include using namespace std; char A[600][600]; int DPUp[600][600], DPLeft[600][600], DPDown[600][600], DPRight[600][600]; int main() { int n, m; cin >> n >> m; for(int i = 1; i <= n; ++i) cin >> A[i] + 1; for(int i = 1; i <= n; ++i) for(int j = 1; j <= m; ++j) { if(A[i][j] == '0' || A[i - 1][j] != '1') continue; DPUp[i][j] = max(2, DPUp[i - 1][j] + 1); } for(int i = 1; i <= n; ++i) for(int j = m; j >= 1; --j) { if(A[i][j] == '0' || A[i][j + 1] != '1') continue; DPRight[i][j] = max(DPRight[i][j + 1], DPUp[i][j + 1]) + 1; } int ans = 0; for(int i = n; i >= 1; --i) for(int j = 1; j <= m; ++j) { if(A[i][j] == '0' || A[i + 1][j] != '1') continue; DPDown[i][j] = max(DPDown[i + 1][j], DPRight[i + 1][j]) + 1; ans = max(ans, DPDown[i][j]); } cout << ans << '\n'; return 0; }