from collections import deque
direction = [[0,1],[1,0],[0,-1],[-1,0]]
'''
def bfs(graph,visited,a,b):
que = deque([])
que.append([a,b])
visited[a][b] = True
while que:
i,j = que.popleft()
for x,y in direction:
cur_x = i+x
cur_y = j+y
if cur_x<0 or cur_y<0 or cur_x>=len(graph) or cur_y>= len(graph[0]):
continue
if visited[cur_x][cur_y] == False and graph[cur_x][cur_y] == 1:
visited[cur_x][cur_y] = True
que.append([cur_x,cur_y]) # 输入当前的坐标,方便好吗搜索
def main():
n,m = map(int,input().split())
graph = []
res = 0
for i in range(n):
num = list(map(int,input().split()))
graph.append(num)
visited = [[False]*m for _ in range(n)]
for i in range(n):
for j in range(m):
if graph[i][j] == 1 and visited[i][j] == False:
res += 1
bfs(graph,visited,i,j)
print(res)
'''
def dfs(graph,visited,x,y):
if graph[x][y] == 0 or visited[x][y] :
return
visited[x][y] = True
for i,j in direction:
cur_x = x+i
cur_y = y+j
if cur_x<0 or cur_y<0 or cur_x >=len(graph) or cur_y>=len(graph[0]):
continue
dfs(graph,visited,cur_x,cur_y)
def main():
n,m = map(int,input().split())
graph = []
for i in range(n):
num = list(map(int,input().split()))
graph.append(num)
visited = [[False]*m for _ in range(n)]
res = 0
for i in range(n):
for j in range(m):
if graph[i][j] == 1 and visited[i][j] == False:
res += 1
dfs(graph,visited,i,j)
print(res)
if __name__ == '__main__':
main()