N,M = map(int,input().split(" "))
graph = [list(map(int, input().split(" "))) for _ in range(N)]
visited = [list(False for _ in range(M)) for _ in range(N)]
dx = [-1,-1,-1,1,1,1,0,0]
dy = [0,-1,1,0,-1,1,-1,1]
from collections import deque
def BFS(x,y):
global trigger
Q = deque()
Q.append([x,y])
while Q:
x,y = Q.popleft()
visited[x][y]=True
for i in range(8):
nx,ny = x+dx[i],y+dy[i]
if 0<=nx<N and 0<=ny<M:
if graph[x][y] == graph[nx][ny] and visited[nx][ny]==False:
Q.append([nx,ny])
if graph[x][y] < graph[nx][ny]:
trigger = False
result = 0
for i in range(N):
for j in range(M):
if graph[i][j] > 0 and visited[i][j]==False:
trigger = True
BFS(i,j)
if trigger == True:
result += 1
print(result)
# 8 7
# 4 3 2 2 1 0 1
# 3 3 3 2 1 0 1
# 2 2 2 2 1 0 0
# 2 1 1 1 1 0 0
# 1 1 0 0 0 1 0
# 0 0 0 1 1 1 0
# 0 1 2 2 1 1 0
# 0 1 1 1 2 1 0
N,M = map(int,input().split(" "))
graph = [list(map(int, input().split(" "))) for _ in range(N)]
visited = [list(False for _ in range(M)) for _ in range(N)]
dx = [-1,-1,-1,1,1,1,0,0]
dy = [0,-1,1,0,-1,1,-1,1]
from collections import deque
def DFS(x,y):
global trigger
visited[x][y] = True
for i in range(8):
nx,ny = x+dx[i], y+dy[i]
if 0<=nx<N and 0<=ny<M:
if graph[x][y] < graph[nx][ny]:
trigger = False
elif graph[x][y] == graph[nx][ny] and visited[nx][ny] == False:
DFS(nx,ny)
result = 0
for i in range(N):
for j in range(M):
if graph[i][j] > 0 and visited[i][j]==False:
trigger = True
DFS(i,j)
if trigger == True:
result += 1
print(result)