밥의 집터

아직 제출이 없습니다시간 제한1초메모리 제한64 MB

문제

밥은 이름난 건축업자다. 땅을 사서 그 위에 집을 지으려 하는데, 땅의 높이가 칸마다 달라서 문제가 생겼다.

땅은 직사각형이고 NN개의 행과 MM개의 열, 즉 N×MN \times M개의 정사각형 칸으로 나뉜다. 밥이 지을 집도 직사각형이고, 네 변은 땅의 변과 평행하며 꼭짓점은 칸의 꼭짓점과 만난다. 집이 덮는 칸의 높이는 모두 같아야 한다. 높이가 다르면 집이 무너진다.

집을 지을 수 있는 방법이 몇 가지인지 구하라. 한 칸만 덮는 집도 한 가지로 센다.

입력

첫째 줄에 정수 NNMM이 주어진다. (1N,M10001 \le N, M \le 1000)

다음 NN개 줄에는 각각 정수 MM개가 주어진다. jj번째 수 aija_{ij}ii번째 행 jj번째 칸의 높이다. (1aij1091 \le a_{ij} \le 10^9)

입력의 양이 매우 많으므로 빠른 입력 방법을 쓰는 편이 좋다. 예를 들어 C++에서는 cin 대신 scanf를, Java에서는 Scanner 대신 BufferedReader를 쓴다.

출력

집을 지을 수 있는 방법의 수를 한 줄에 출력한다.

힌트

첫 번째 예제에서 가능한 집터를 몇 가지 들면, 마주 보는 두 꼭짓점이 (0,0)과 (1,1)인 직사각형과 (0,0)과 (0,2)인 직사각형은 높이가 2이고, (2,0)과 (2,2)인 직사각형과 (1,2)와 (2,2)인 직사각형은 높이가 1이다. 괄호 안의 첫 번째 수는 행 번호, 두 번째 수는 열 번호이며 0부터 센다.