#include<stdio.h>

int M[50][50];

void visit(int i, int j, int x, int y){
  
  M[i][j] = 0; 
  
  
  if(M[i][j+1] == 1 && j+1<x){ 
    visit(i,j+1,x ,y);
    // M[i][j+1]=0;
  }
  if(M[i+1][j+1] == 1&& j+1<x && i+1<y){
    visit(i+1,j+1,x,y);
    // M[i+1][j+1]=0;
  }
  if(M[i+1][j] == 1 && i+1<y){
    visit(i+1,j, x, y);
    // M[i+1][j]=0;
  }
  if(M[i+1][j-1] == 1&& i+1<y && j-1>=0){
    visit(i+1,j-1,x, y);
    // M[i+1][j-1]=0;
  }
  if(M[i][j-1] == 1 && j-1>=0){
    visit(i,j-1, x,y);
    // M[i][j-1]=0;
  }
  if(M[i-1][j-1] == 1 && i-1>=0 && j-1>=0){
    visit(i-1,j-1, x, y);
    // M[i-1][j-1]=0;
  }
  if(M[i-1][j] == 1 && i-1>=0){
    visit(i-1,j, x, y);
    // M[i-1][j]=0;
  }
  if(M[i-1][j+1] == 1 && i-1>=0 && j+1<x){
    visit(i-1,j+1, x, y);
    //M[i-1][j-1]=0;
  }
  

}





int main(void){

  int x, y, a, b, is;

  while(1){
    
    is = 0;
    
    scanf("%d %d", &x, &y);
   
    if(x==0 && y==0)break;


    for(a=0; a<y; a++){
      for(b=0; b<x; b++){
	
	scanf("%d", &M[a][b]);
	
      }     
    }
    

    for(a=0; a<y; a++){
      for(b=0; b<x; b++){
	
	if(M[a][b]==1){
	  is++;
	  visit(a,b,x,y);
	}
      }
    }
    
    printf("%d\n", is);
    
  }
  
  
  
  
  
  return 0;
}