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;

template<class T> T largest_rectangle (vector<T> a) {
	using value_type = T;
    a.emplace_back(0);
    int n = a.size();
	value_type ret = 0;
    stack<pair<value_type, int>> sta;
    for (int i = 0; i < n; i++) {
        if (sta.empty()) {
			sta.emplace(a[i], i);
        } else if (sta.top().first < a[i]) {
			sta.emplace(a[i], i);
        } else if (sta.top().first > a[i]) {
            int idx = i;
            while (!sta.empty()) {
                if (sta.top().first < a[i]) break;
                value_type h; int t;
				tie(h, t) = sta.top();
				sta.pop();
                value_type s = h * (i - t);
				idx = t;
                if (ret < s) ret = s;
            }
            sta.emplace(a[i], idx);
        }
    }
    return ret;
}


int main() {
	int h, w;
	cin >> h >> w;
	vector<vector<int>> a(h, vector<int>(w));
	for (int i = 0; i < h; i++) {
		for (int j = 0; j < w; j++) {
			cin >> a[i][j];
		}
	}
	
	int ans = 0;
	vector<int> hist(w, 0);
	for (int i = 0; i < h; i++) {
		for (int j = 0; j < w; j++) {
			if (a[i][j]) hist[j] = 0;
			else hist[j]++;
		}
		ans = max(ans, largest_rectangle(hist));
	}
	
	cout << ans << '\n';
	
	return 0;
}
