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;
int main() {
  int h, w;
  cin >> h >> w;
  int space[h][w];
  int y[h][w];
  int x[h][w];
  for (int i = 0; i < h; i++) {
    for (int j = 0; j < w; j++) {
      cin >> space[i][j];
      x[i][j] = 0;
      y[i][j] = 0;
    }
  }
  if (space[0][0] == 0) {
    x[0][0] = 1;
    y[0][0] = 1;
  }
  int max_area = 0;
  for (int j = 1; j < w; j++) {
    x[0][j] = (space[0][j] == 0) ? x[0][j - 1] + 1 : 0;
    y[0][j] = (space[0][j] == 0) ? 1 : 0;
    max_area = (max_area < y[0][j] * x[0][j]) ? y[0][j] * x[0][j] : max_area;
  }
  for (int i = 1; i < h; i++) {
    y[i][0] = (space[i][0] == 0) ? x[i - 1][0] + 1 : 0;
    x[i][0] = (space[i][0] == 0) ? 1 : 0;
    max_area = (max_area < y[i][0] * x[i][0]) ? y[i][0] * x[i][0] : max_area;
  }
  int fh = 0, fw = 0;
  for (int i = 1; i < h; i++) {
    for (int j = 1; j < w; j++) {
      x[i][j] = (space[i][j] == 0) ? x[i][j - 1] + 1 : 0;
      y[i][j] = (space[i][j] == 0) ? y[i - 1][j] + 1 : 0;
      fh = min(y[i][j], y[i][j - y[i][j]]);
      fw = min(x[i][j], x[i - x[i][j]][j]);
      max_area = (max_area < fh * fw) ? fh * fw : max_area;
    }
  }
  cout << max_area << endl;
  return 0;
}
