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>
#define r(i,n) for(int i=0;i<n;i++)
using namespace std;
typedef pair<int,int>P;
#define fi first
#define se second
int h,w,a[1501][1501],ls,s[1501][1501];
int main(){
	cin>>h>>w;
		r(i,h)r(j,w)cin>>s[i][j];
		memset(a,0,sizeof(a));
		r(i,h)r(j,w){
			if(!i&&!s[i][j])a[i][j]++;
			if(i&&!s[i][j])a[i][j]=a[i-1][j]+1;
		}
		int ans=0;
		r(i,h){
			stack<P>st;
			r(j,w+1){
				if(st.empty())st.push(P(a[i][j],j));
				if(st.top().fi==a[i][j])continue;
				else if(st.top().fi<a[i][j])st.push(P(a[i][j],j));
				else{
					while(!st.empty()&&st.top().fi>a[i][j]){
						ans=max(ans,(j-st.top().se)*st.top().fi);
						ls=st.top().se;
						st.pop();
					}
					st.push(P(a[i][j],ls));
				}
			}
		}
		cout<<ans<<endl;
	
}