#include <bits/stdc++.h>
using namespace std;
struct node
{
    int x,y;
};
stack<node> d;
#define mo 1500
int a[mo][mo];
int main()
{
    int n,m;
    while(cin>>n>>m)
    {
        int x;
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=m;j++)
            {
                cin>>x;
                if(!x)
                    a[i][j]+=a[i-1][j]+1;

            }
        }

        /*
        cout<<endl;
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=m;j++)
            {
                cout<<a[i][j]<<' ';
            }
            cout<<endl;
        }
        */


        node t;
        int maxs=0;
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=m+1;j++)
            {
                t.x=a[i][j];
                t.y=j;

                if(d.size()==0||t.x>d.top().x) d.push(t);
                else if(t.x<d.top().x)
                {
                    int l=j;
                    while(d.size()&&d.top().x>t.x)
                    {
                        maxs=max(maxs,(l-d.top().y)*d.top().x);
                        t.y=d.top().y;
                        d.pop();
                    }
                    if(j<=m)d.push(t);
                }
            }

        }
        cout<<maxs<<endl;
    }

}

