everflame 和 KisuraOP 正在玩一个游戏。游戏开始时,everflame 提供了一个矩阵,KisuraOP 的目标是通过操作该矩阵来获得尽可能高的分数。
everflame 给出的矩阵是一个 $n \times m$ 的矩阵 $a_{i,j}$,其中每个位置的初始值均为 $0$ 或 $1$。此外,他还提供了两个整数 $A$ 和 $B$。
KisuraOP 可以对该矩阵执行任意次数(包括 $0$ 次)的操作,每次操作可以是以下两种类型之一:
- 选择一个 $i \in [1, n]$,翻转第 $i$ 行的所有元素。
- 选择一个 $j \in [1, m]$,翻转第 $j$ 列的所有元素。
翻转一个元素意味着如果它原来是 $1$,则变为 $0$;反之,如果它原来是 $0$,则变为 $1$。
对于矩阵中第 $i$ 行第 $j$ 列的元素 $a_{i,j}$,如果 $a_{i,j} = 1$,则该元素将贡献 $(A \cdot i + B \cdot j)$ 的分数;否则,其贡献为 $0$。矩阵的总分是所有 $n \times m$ 个元素贡献之和。
请帮助 KisuraOP 确定在对矩阵执行若干操作后所能达到的最大分数。
输入格式
第一行包含四个整数 $n, m, A, B$ ($1 \le n \le 10^6, 1 \le m \le 10, 0 \le |A|, |B| \le 10^6$)。
接下来的 $n$ 行包含长度为 $m$ 的字符串。第 $i$ 行第 $j$ 列的字符表示 $a_{i,j}$ ($a_{i,j} \in \{0, 1\}$)。
输出格式
输出一个整数,表示可能的最大分数。
样例
输入 1
2 2 1 1 01 10
输出 1
12
输入 2
3 3 1 -5 010 000 010
输出 2
-8
输入 3
3 3 -3 -6 011 010 100
输出 3
-24
说明
对于第一个样例,先翻转第 $1$ 行,然后翻转第 $2$ 列,可以使整个矩阵变为 $1$,从而达到最大分数。分数为 $(1 \cdot 1 + 1 \cdot 1) + (1 \cdot 1 + 1 \cdot 2) + (1 \cdot 2 + 1 \cdot 1) + (1 \cdot 2 + 1 \cdot 2) = 12$。
对于第二个样例,仅翻转第 $2$ 列即可达到最大分数,且可以证明不存在更好的方案。分数为 $1 \cdot 2 + (-5) \cdot 2 = -8$。