Given a matrix (H × W) which contains only 1 and 0, find the area of the largest rectangle which only contains 0s.

Constraints

* 1 ≤ H, W ≤ 1,400

Input


H W
c1,1 c1,2 ... c1,W
c2,1 c2,2 ... c2,W
:
cH,1 cH,2 ... cH,W


In the first line, two integers H and W separated by a space character are given. In the following H lines, ci,j, elements of the H × W matrix, are given.

Output

Print the area (the number of 0s) of the largest rectangle.

Example

Input

4 5
0 0 1 0 0
1 0 0 0 0
0 0 0 1 0
0 0 0 1 0


Output

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

}

