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
# n,m = map(int,sys.stdin.readline().split())
# a = list(map(int,sys.stdin.readline().split()))
# s = sys.stdin.readline().rstrip()
import sys,bisect
sys.setrecursionlimit(15000)
h,w = map(int,sys.stdin.readline().split())
buffer = [None for _ in range(h)]
T = [[0]*(w+1) for _ in range(h)]

for r in range(h):
  buffer[r] = list(map(int,sys.stdin.readline().split()))

for col in range(w):
  for r in range(h):
    if buffer[r][col] == 1:
      T[r][col] = 0
    elif r == 0:
      T[0][col] = 1
    else:
      T[r][col] = T[r-1][col]+1
m = 0

for buffer in T:
  stack = []
  for i in range(w+1):
    rect = {"h":buffer[i],"p":i}
    if not stack:
      stack.append(rect)
    else:
      if stack[-1]["h"] < buffer[i]:
        stack.append(rect)
      elif stack[-1]["h"] > buffer[i]:
        while stack and stack[-1]["h"] >= buffer[i]:
          pre = stack.pop()
          m = max(m,pre["h"]*(i-pre["p"]))
          rect["p"] = pre["p"]
        stack.append(rect)
print(m)
