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 |

*The land divided into squares.*

Two possible locations of house are marked with red and blue.

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 beacuse 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