#include <stdio.h>

int map[50][50];
int w,h;
int a,b,i,j;
int count;

void visit(int x, int y) {

  // printf("check map[%d][%d] = %d\n",x,y,map[x][y]);

 if(map[x][y] == 1){
   map[x][y] = 0;


   if(x  < w-1) {
     //     printf("check right\n");
     visit(x+1,y);
   }if(x > 0) {
     // printf("check left\n");
     visit(x-1,y);
   }if(y > 0) {
     // printf("check down\n");
     visit(x,y-1);
   }if(y < h - 1) {
     //printf("check ue\n");
     visit(x,y+1);
   }if(x < w-1 && y < h-1) {
     // printf("check migi ue\n");
     visit(x+1,y+1);
   } if(x > 0 && y > 0 ) {
     // printf("check hidari sita\n");
     visit(x-1,y-1);
   } if(x > 0 && y < h-1) {
     // printf("check hidari ue");
     visit(x-1,y+1);
   } if(x < w-1 && y > 0) {
     //printf("check migi sita\n");
     visit(x+1,y-1);
   } 
 }



}


int main() {


 while(1) {
   count = 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",&a);
   map[j][i] = a;
     }
   }

   for(i=0;i<h;i++) {
     for(j=0;j<w;j++) {
   if(map[j][i] == 1) {
     count++;
     visit(j,i);
    
   }
     }
   }



   /* / check cord
   for(i=0;i<h;i++) {
     for(j=0;j<w;j++) {
   printf("%d ",map[j][i]);
     }
     printf("\n");
   }
   */

   printf("%d\n",count);


 }

 return 0;

}