(1회차 시도 성공!)
import java.io.*;
import java.util.*;
public class Main {
static int[] dx = {-1,0,1,-1,1,-1,0,1};
static int[] dy = {-1,-1,-1,0,0,1,1,1};
static int[][] arr;
static boolean[][] visited;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
while(true){
StringTokenizer st = new StringTokenizer(br.readLine());
int w = Integer.parseInt(st.nextToken());
int h = Integer.parseInt(st.nextToken());
if(w == 0 && h == 0){
break;
}
arr = new int[h][w];
visited = new boolean[h][w];
for (int i = 0; i < h; i++) {
st = new StringTokenizer(br.readLine());
for (int j = 0; j < w; j++) {
arr[i][j] = Integer.parseInt(st.nextToken());
}
}
int count = 0;
for (int i = 0; i < h; i++) {
for (int j = 0; j < w; j++) {
if(!visited[i][j] && arr[i][j] == 1){
bfs(i,j,w,h);
count++;
}
}
}
bw.write(count+"\n");
}
br.close();
bw.close();
}
private static void bfs(int y, int x, int w, int h) {
Queue<int[]> q = new LinkedList<>();
q.add(new int[]{y,x});
visited[y][x] = true;
while(!q.isEmpty()){
int[] now = q.poll();
for (int i = 0; i < 8; i++) {
int ny = now[0] + dy[i];
int nx = now[1] + dx[i];
if(ny >= 0 && ny < h && nx >= 0 && nx < w && !visited[ny][nx] && arr[ny][nx] == 1){
visited[ny][nx] = true;
q.add(new int[]{ny,nx});
}
}
}
}
}