#include <stdio.h>
#include <string.h>

int visited[60][60], map[60][60];
int dr[]={-1, -1, -1, 0, 0, 1, 1, 1};
int dc[]={-1, 0, 1, -1, 1, -1, 0, 1};
int h, w, k;

void dfs(int r, int c)
{
    int i;
    if (visited[r][c]) return;
    visited[r][c]=k;
    for(i=0;i<8;++i) {
        int nr=r+dr[i], nc=c+dc[i];
        if (nr<0 || nr>=h || nc<0 || nc>=w || visited[nr][nc] || map[nr][nc]!=1) continue;
        dfs(nr, nc);
    }
}

int main()
{
    while (1) {
        int i, j;
        scanf("%d%d", &w, &h);
        if (w==0) break;

        memset(map, 0, sizeof(map));
        memset(visited, 0, sizeof(visited));
        for(i=0;i<h;++i) {
            for(j=0;j<w;++j) scanf("%d", &map[i][j]);
        }

        k=1;
        for(i=0;i<h;++i) for(j=0;j<w;++j)
            if (map[i][j] && !visited[i][j]) { dfs(i, j); ++k; }
        printf("%d\n", k-1);
    }
    return 0;
}