Little Bob is a famous builder. He bought land and wants to build a house. Unfortunately, the problem is the land's terrain, it has a variable elevation.
The land is shaped like a rectangle, meters wide and meters long. It can be divided into squares (see the image). Bob's house will be shaped like a rectangle that has sides parallel with the land's edges and its vertices coincide with the vertices of the squares. All the land covered by Bob's house must be of equal elevation to prevent it from collapsing.
2 | 2 | 2 |
2 | 2 | 1 |
1 | 1 | 1 |
2 | 1 | 2 |
1 | 2 | 1 |
Two possible locations of house are marked with red and blue.
Calculate the number of ways Bob can build his house!
Input
The first line of input contains integers and . Each of the following lines contains integers , respectively the height of each square of land.
Warning: Please use faster input methods because the amount of input is very large. (For example, use scanf
instead of cin
in C++ or BufferedReader
instead of Scanner
in Java.)
Output
The first and only line of output must contain the required number from the task statement.
Scoring
In test cases worth 20% of total points, it will hold .
In test cases worth 60% of total points, it will hold .
Sample Input 1
5 3
2 2 2
2 2 1
1 1 1
2 1 2
1 2 1
Sample Output 1
27
Explanation for Sample Output 1
Some of the possible house locations are rectangles with opposite vertices in -, - (height 2) and -, - (height 1). The first number in the brackets represents the row number and the second one the column number (0-indexed).
Sample Input 2
4 3
1 1 1
1 1 1
2 2 2
2 2 2
Sample Output 2
36
Comments