#include <iostream>
#include <queue>
#include <stdio.h>
#include <string>
#include <cmath>
#include <algorithm>
int arr[50][50];
int visited[50][50];
bool Done[50][50];
int dx[8] = { -1,1,0,0,-1,1,1,-1 };
int dy[8] = { 0,0,-1,1,1,-1,1,-1 };
int t, n;
std::vector<int> vec;
int w, h;
void bfs(int c, int r) {
visited[c][r] = 1;
for (int i = 0;i < 8;i++) {
if (r + dx[i] >= 0 && r + dx[i] < w && c + dy[i] >= 0 && c + dy[i] < h) {
if (arr[c + dy[i]][r + dx[i]] == 1 && visited[c + dy[i]][r + dx[i]] == 0) {
bfs(c + dy[i], r + dx[i]);
}
}
}
}
int main() {
while (1) {
scanf("%d %d", &w, &h);
if (w == 0 && h == 0) {
return 0;
}
for (int i = 0;i < h;i++) {
for (int j = 0;j < w;j++) {
arr[i][j] = 0;
visited[i][j] = 0;
}
}
for (int i = 0;i < h;i++) {
for (int j = 0;j < w;j++) {
scanf("%d", &arr[i][j]);
}
}
int cnt = 0;
for (int i = 0;i < h;i++) {
for (int j = 0;j < w;j++) {
if (visited[i][j] == 0 && arr[i][j] == 1) {
bfs(i, j);
cnt++;
}
}
}
printf("%d\n", cnt);
}
}