#include<bits/stdc++.h>
using namespace std;
const int N=209;
struct node{
int val,pos;
}A[N];
int up[N][N],n,m,mn,ans=0;
bool cmp(node a,node b){
if(a.val==b.val) return a.pos<b.pos;
else return a.val<b.val;
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>up[i][j];
up[i][j]+=up[i-1][j];
}
}
for(int u=1;u<=n;u++){
for(int d=u;d<=n;d++){
A[0].val=0;
for(int k=1;k<=m;k++){
A[k].val=up[d][k]-up[u-1][k];
A[k].val+=A[k-1].val;
A[k].pos=k;
}
sort(A+0,A+m+1,cmp);
mn=A[0].pos;
for(int i=1;i<=m;i++){
if(mn<A[i].pos){
if((d-u+1)*(A[i].pos-mn)>ans)ans=(d-u+1)*(A[i].pos-mn);
}
else mn=A[i].pos;
}
}
}
cout<<ans;
}