#include <fstream>
#define I_F "long.in"
#define O_F "long.out"
#define MAX 200
using namespace std;
short n,m;
int map[MAX][MAX];
long sum[MAX][MAX];
int ans;
void Input();
void Get_sum();
long Get_height(short x1, short y1, short x2, short y2);
void Search();
void Output();
int main()
{
Input();
Get_sum();
Search();
Output();
return 0;
}
void Input()
{
ifstream fin(I_F);
fin>>n>>m;
short i,j;
for (i=0; i<n; i++)
for (j=0; j<m; fin>>map[i][j++]);
fin.close();
}
void Get_sum()
{
short i,j;
sum[0][0]=map[0][0];
for (i=1; i<n; i++)
sum[i][0]=sum[i-1][0]+map[i][0];
for (j=1; j<m; j++)
sum[0][j]=sum[0][j-1]+map[0][j];
for (i=1; i<n; i++)
for (j=1; j<m; j++)
sum[i][j]=sum[i-1][j]+sum[i][j-1]-sum[i-1][j-1]+map[i][j];
}
long Get_height(short x1, short y1, short x2, short y2)
{
long t=sum[x2][y2];
if (x1>0)
t-=sum[x1-1][y2];
if (y1>0)
t-=sum[x2][y1-1];
if ((x1>0)&&(y1>0))
t+=sum[x1-1][y1-1];
return t;
}
void Search()
{
short i,j,k,l;
for (i=0; i<n; i++)
for (j=0; j<m; j++)
for (k=i; k<n; k++)
for (l=j; l<m; l++)
if (((k-i+1)*(l-j+1)>ans)&&(Get_height(i,j,k,l)>0))
ans=(k-i+1)*(l-j+1);
}
void Output()
{
ofstream fout(O_F);
fout<<ans<<'\n';
fout.close();
}