package main
import (
"fmt"
"io"
"os"
)
func nextInt(data []byte, i int) (int, int) {
n := len(data)
for i < n && (data[i] < '0' || data[i] > '9') {
i++
}
v := 0
for i < n && data[i] >= '0' && data[i] <= '9' {
v = v*10 + int(data[i]-'0')
i++
}
return v, i
}
func main() {
data, _ := io.ReadAll(os.Stdin)
idx := 0
n, idx := nextInt(data, idx)
m, idx := nextInt(data, idx)
step := m + 1
freq := make([]uint16, m*step)
for r := 0; r < n; r++ {
for idx < len(data) && data[idx] != '0' && data[idx] != '1' {
idx++
}
row := data[idx : idx+m]
idx += m
w := 0
base := (m - 1) * step
for j := m - 1; j >= 0; j-- {
if row[j] == '1' {
w++
freq[base+w]++
} else {
w = 0
}
base -= step
}
}
ans := 0
for j := 0; j < m; j++ {
base := j * step
cnt := 0
for w := m; w >= 1; w-- {
cnt += int(freq[base+w])
area := cnt * w
if area > ans {
ans = area
}
}
}
fmt.Print(ans)
}