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>
int m[1400 + 1][1400 + 1];
int st[1400];
char z[9999999];
int get() {
  static int input_count = 0;
  int r = 0;
  for (; '0' <= z[input_count] && z[input_count] <= '9';)
    r = r * 10 + z[input_count++] - '0';
  input_count++;
  return r;
}
int main() {
  fread(z, 1, sizeof(z), stdin);
  int i, j, k, y = get(), x = get(), r, ptr;
  for (j = 0; j < y; j++)
    for (r = i = 0; i < x; m[j][i] = r, i++) {
      int t = get();
      r = t == 0 ? r + 1 : 0;
    }
  for (r = j = 0; j < y; j++)
    for (ptr = i = 0; i < x; i++) {
      if (!ptr || st[ptr - 1] < m[j][i])
        st[ptr++] = m[j][i];
      else {
        for (; ptr && st[ptr - 1] > m[j][i];) {
          int y = ptr - 1, x = st[--ptr];
          if (r < x * y) r = x * y;
        }
        st[ptr++] = m[j][i];
      }
    }
  printf("%d\n", r);
  return 0;
}
