#include <bits/stdc++.h>

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;
}