#include <fstream>
#include <cstring>
#include <cstdio>
#define DIM 205
using namespace std;
int dp1[DIM][DIM][DIM] , dp2[DIM][DIM][DIM] , lastst[DIM][DIM] , lastdr[DIM][DIM] , ans1[DIM][DIM] , ans2[DIM][DIM];
int n , m , sol;
char mat[DIM][DIM];
int main() {
freopen("bmatrix.in" , "r" , stdin);
freopen("bmatrix.out" , "w" , stdout);
scanf("%d%d" , &n , &m);
for(int i = 1 ; i <= n ; ++i) {
scanf("%s" , mat[i] + 1);
}
for(int i = 1 ; i <= n ; ++i) {
for(int j = 1 ; j <= m ; ++j) {
if(mat[i][j] == '1') {
lastst[i][j] = 0;
}
else {
lastst[i][j] = lastst[i][j - 1] + 1;
}
}
for(int j = m ; j >= 1 ; --j) {
if(mat[i][j] == '1') {
lastdr[i][j] = 0;
}
else {
lastdr[i][j] = lastdr[i][j + 1] + 1;
}
}
}
for(int i = 1 ; i <= n ; ++i) {
for(int j = 1 ; j <= m ; ++j) {
for(int k = 2 ; k <= i ; ++k) {
dp1[i][j][k] = min(dp1[i - 1][j][k - 1] , lastst[i][j]);
ans1[i][j] = max(ans1[i][j] , dp1[i][j][k] * k);
}
dp1[i][j][1] = lastst[i][j];
ans1[i][j] = max(ans1[i][j] , dp1[i][j][1]);
ans1[i][j] = max(ans1[i][j] , max(ans1[i - 1][j] , ans1[i][j - 1]));
}
}
for(int i = n ; i >= 1 ; --i) {
for(int j = m ; j >= 1; --j) {
for(int k = 2 ; k <= n - i + 1 ; ++k) {
dp2[i][j][k] = min(dp2[i + 1][j][k - 1] , lastdr[i][j]);
ans2[i][j] = max(ans2[i][j] , dp2[i][j][k] * k);
}
dp2[i][j][1] = lastdr[i][j];
ans2[i][j] = max(ans2[i][j] , dp2[i][j][1]);
ans2[i][j] = max(ans2[i][j] , max(ans2[i + 1][j] , ans2[i][j + 1]));
}
}
for(int lin = 1 ; lin < n ; ++lin) {
int s1 = ans1[lin][m];
int s2 = ans2[lin + 1][1];
sol = max(sol , s1 + s2);
}
memset(ans1 , 0 , sizeof(ans1));
memset(ans2 , 0 , sizeof(ans2));
memset(dp1 , 0 , sizeof(dp1));
memset(dp2 , 0 , sizeof(dp2));
for(int i = 1 ; i <= n ; ++i) {
for(int j = m ; j >= 1 ; +--j) {
for(int k = 2 ; k <= i ; ++k) {
dp1[i][j][k] = min(dp1[i - 1][j][k - 1] , lastdr[i][j]);
ans1[i][j] = max(ans1[i][j] , dp1[i][j][k] * k);
}
dp1[i][j][1] = lastdr[i][j];
ans1[i][j] = max(ans1[i][j] , dp1[i][j][1]);
ans1[i][j] = max(ans1[i][j] , max(ans1[i - 1][j] , ans1[i][j + 1]));
}
}
for(int i = n ; i >= 1 ; --i) {
for(int j = 1 ; j <= m; ++j) {
for(int k = 2 ; k <= n - i + 1 ; ++k) {
dp2[i][j][k] = min(dp2[i + 1][j][k - 1] , lastst[i][j]);
ans2[i][j] = max(ans2[i][j] , dp2[i][j][k] * k);
}
dp2[i][j][1] = lastst[i][j];
ans2[i][j] = max(ans2[i][j] , dp2[i][j][1]);
ans2[i][j] = max(ans2[i][j] , max(ans2[i + 1][j] , ans2[i][j - 1]));
}
}
for(int col = 1 ; col < m ; ++col) {
int s1 = ans2[1][col + 1];
int s2 = ans1[col][n];
sol = max(sol , s1 + s2);
}
printf("%d" , sol);
return 0;
}