#include <stdio.h>

int map[50][50], island[50][50];
int ans;

void dfs(int y, int x, int flg) {
	int i, j;
	
	if(x < 0 || y < 0 || x >= 50 || y >= 50 || map[y][x] != 0) { return; }
	
	if(flg) {
		if(island[y][x]) {
			map[y][x] = 1;
			for(i = -1; i <= 1; i ++) {
				for(j = -1; j <= 1; j ++) {
					dfs(y + i, x + j, 1);
				}
			}
		}
		else {
			return;
		}
	}
	else {
		map[y][x] = 1;
		if(island[y][x]) {
			ans ++;
			for(i = -1; i <= 1; i ++) {
				for(j = -1; j <= 1; j ++) {
					dfs(y + i, x + j, 1);
				}
			}
		}
		else {
			for(i = -1; i <= 1; i ++) {
				for(j = -1; j <= 1; j ++) {
					dfs(y + i, x + j, 0);
				}
			}
		}
	}
	return;
}

int main() {
	int i, j, w, h;
	while(scanf("%d %d", &w, &h)) {
		if(w == 0 && h == 0) { break; }
		
		ans = 0;
		for(i = 0; i < 50; i ++) {
			for(j = 0; j < 50; j ++) {
				map[i][j] = -1;
				island[i][j] = 0;
			}
		}
		
		for(i = 0; i < h; i ++) {
			for(j = 0; j < w; j ++) {
				scanf("%d", &island[i][j]);
				map[i][j] = 0;
			}
		}
		
		for(i = 0; i < h; i ++) {
			for(j = 0; j < w; j ++) {
				dfs(i, j, 0);
			}
		}
		
		printf("%d\n", ans);
	}
		
	return 0;
}