#include <string.h>

int count,map[52][52];
int dir[8][2]={{-1,0},{-1,1},{-1,-1},{0,1},{1,0},{1,1},{1,-1},{0,-1}};

void solve(int i,int j){
  int k;

  map[i][j] = 0;
  for(k=0;k<8;k++){
    if(map[i+dir[k][0]][j+dir[k][1]]==1){solve(i+dir[k][0],j+dir[k][1]);}
  }
}

int main(void){
  int i,j,w,h;

  while(1){
    scanf("%d%d",&w,&h);
    if(!w && !h) break;

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

    count = 0;
    for(i=1;i<=h;i++){
      for(j=1;j<=w;j++){
        if(map[i][j]==1){solve(i,j);count++;}
      }
    }
    printf("%d\n",count);
  }

  return 0;
}