小 Bob 是一位著名的建筑师。他买了一块地,想要建一座房子。不幸的是,这块地的地形存在问题,它的海拔高度是变化的。
这块土地呈矩形,宽 $N$ 米,长 $M$ 米。它可以被划分为 $N \times M$ 个正方形(见下图)。Bob 的房子也将呈矩形,其边界与土地的边界平行,且其顶点与正方形的顶点重合。为了防止倒塌,Bob 的房子所覆盖的所有土地必须具有相同的海拔高度。
被划分为正方形的土地。两个可能的房子位置分别用红色和蓝色标记。
计算 Bob 可以建造房子的方案数!
输入格式
输入的第一行包含整数 $N$ 和 $M$($1 \le N, M \le 1\,000$)。
接下来的 $N$ 行,每行包含 $M$ 个整数 $a_{ij}$($1 \le a_{ij} \le 10^9$),分别表示每个正方形土地的高度。
警告:由于输入数据量非常大,请使用更快的输入方法。(例如,在 C++ 中使用 scanf 代替 cin,或在 Java 中使用 BufferedReader 代替 Scanner。)
输出格式
输出的第一行也是唯一的一行,包含题目中所要求的方案数。
子任务
- 在占总分 $20\%$ 的测试数据中,满足 $N, M \le 50$。
- 在占总分 $60\%$ 的测试数据中,满足 $N, M \le 500$。
样例
输入样例 1
5 3 2 2 2 2 2 1 1 1 1 2 1 2 1 2 1
输出样例 1
27
输入样例 2
4 3 1 1 1 1 1 1 2 2 2 2 2 2
输出样例 2
36
说明
第一个样例的说明:一些可能的房子位置是矩形,其对角顶点为 $(0,0)\text{-}(1,1)$、$(0,0)\text{-}(0,2)$(高度为 $2$)以及 $(2,0)\text{-}(2,2)$、$(1,2)\text{-}(2,2)$(高度为 $1$)。括号中的第一个数字表示行号,第二个数字表示列号(从 $0$ 开始索引)。