#include using namespace std; const int INF = (1 << 29) - 1; char s[510][510]; int n, m; int DP[4][510][510]; int up[510][510]; int rgt[510][510]; int ans = 0; int main() { cin >> n >> m; for(int i = 1; i <= n; ++i) { cin >> (s[i] + 1); } for(int i = 1; i <= n; ++i) { for(int j = 1; j <= n; ++j) { if(s[i][j] == '0') continue; up[i][j] = 1 + up[i - 1][j]; } } for(int i = 1; i <= n; ++i) rgt[i][n + 1] = -INF; for(int i = 1; i <= n; ++i) { for(int j = n; j >= 1; --j) { int &now = rgt[i][j]; if(s[i][j] == '0') { now = -INF; continue; } now = 1 + rgt[i][j + 1]; if(up[i][j + 1] > 1) now = max(now, 1 + up[i][j + 1]); } } for(int i = 1; i <= n; ++i) { for(int j = 1; j <= n; ++j) { if(up[i][j] > 1) { int now = up[i][j] + rgt[i][j] - 1; if(now > ans) ans = now; } } } cout << ans << "\n"; return 0; }