#include <stdio.h>
#include <stdlib.h>

int w, h;
int island[50][50], map[50][50];
int i_num = 0;

int Search() {
  int x, y, start = 0;

  //TõÂ\ÍÍàÅ¢TõÌêÉTõN_ðÝu
  for(y = 0; y < h; y ++) {
    for(x = 0; x < w; x ++) {
      //TõN_ª¾Á½Æ«AAµÄ¢éðTµnßé
      if(island[y][x] == 1 && start == 0) {
	start = 1;
      }
      else if(start == 1 && island[y][x] == 0) {
	start = 0;
      }
      //    printf("(x, y) = (%d, %d)\n", x, y);
      //    printf("island = %d, start = %d\n", island[y][x], start);

      _search(x, y, start);
    }
  }

  return i_num;
}

int _search(int x, int y, int start) {

  //TõÏÝ or TõÀWªÅÍÈ¯êÎTõI¹
  if(map[y][x] == 1 || island[y][x] == 0) {
    return 0;
  }
  else if(start == 1) {
    i_num ++;
    start = 0;
    //    printf("i_num = %d\n", i_num);
  }

  int i, j;

  map[y][x] = 1;  //±ÌÀWÉTõÏÝtOð§Äé

  //8ûüÉÂ¢ÄATõÂ\ÍÍàÅ¢TõÌêðTõ·é
  for(i = -1; i <= 1; i ++) {
    for(j = -1; j <= 1; j ++) {
      if(   x + i < 0 || w - 1 < x + i
	 || y + j < 0 || h - 1 < y + j
	 || map[y + j][x + i] == 1) {
	continue;
      }
      _search(x + i, y + j, start);
    }
  }
    
  return 0;
}

int main() {
  int i, j;

  while(1) {
    // ±±©ç
    for(i = 0; i < 50; i ++) {
      for(j = 0; j < 50; j ++) {
	island[i][j] = 0;
	map[i][j] = 0;
      }
    }

    scanf("%d %d", &w, &h);
    if(w == 0 && h == 0) { break; }

    for(i = 0; i < h; i ++) {
      for(j = 0; j < w; j ++) {
	scanf("%d ", &island[i][j]);
      }
    }
    // ±±ÜÅÒW·éÈ

    printf("%d\n", Search());
    i_num = 0;
  }

  return 0;
}