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;
const int N =1500;
int G[N][N];
int l[N];
int r[N];		
int H[N+5];
int main(){
	int h,w;
	cin>>h>>w;
	for(int i=1;i<=h;i++){
		for(int j=1;j<=w;j++)
			cin>>G[i][j];
	}
	int max1=0;
	for(int i=1;i<=h;i++){
		stack<int> S;
		for(int j=1;j<=w;j++){
			if(G[i][j])	H[j]=0;
			else H[j]++;
		}
		for(int j=1;j<=w;j++){
			if(S.empty()||H[S.top()]<=H[j]){
				if(S.empty()){
					S.push(j);
					l[j]=0; 
				} 
				else{
					l[j]=S.top();
					S.push(j);
				}
			}
			else{
				while(H[S.top()]>H[j]){
					r[S.top()]=j;
					S.pop();
					if(S.empty()) break;
				}
				if(S.empty()){
					S.push(j);
					l[j]=0; 
				} 
				else{
					l[j]=S.top();
					S.push(j);
				}
			}
		}
		while(!S.empty()){
			r[S.top()]=w+1;
			S.pop();
		}
		for(int j=1;j<=w;j++){
			max1=max(max1,(r[j]-l[j]-1)*H[j]);
		}
	}
	cout<<max1<<endl;
}
