def calcs(x,y,ax,ay,bx,by) ((ax-x)*(by-y)-(bx-x)*(ay-y))/2.0 end
def inpf() a=gets.chomp.split(" ").map(&:to_f)end
def inps() a=gets.chomp.split(" ")end  
def copy(a) Marshal.load(Marshal.dump(a)) end
def kaizyo(n)(n < 2)? 1 : (2..n).inject(:*) end
def scount(a) b=na(a.max+1);a.each{|n|b[n]+=1};return b end
def na(n,d=0) Array.new(n,d)end
def na2(n,m,d=0) Array.new(n){Array.new(m,d)}end
def na3(n,m,l,d=0) Array.new(n){Array.new(m){Array.new(l,d)}}end
def bit(n) n.to_s(2).split("").map(&:to_i) end
def inp() a=gets.chomp.split(" ").map(&:to_i)end
def saiki(a,x,y)
  return if(x < 0)
  return if(y < 0)
  return if(y >= @h)
  return if(x >= @w)
  return if(a[y][x] == @bad)
  a[y][x] = @bad
  saiki(a,x+1,y)
  saiki(a,x,y+1)
  saiki(a,x-1,y)
  saiki(a,x,y-1)
  
  saiki(a,x+1,y+1)
  saiki(a,x-1,y+1)
  saiki(a,x-1,y-1)
  saiki(a,x+1,y-1)
end
@bad = 0
while true
  @w,@h = inp
  d = []
  break if @w == 0
  @h.times do |i|
    d.push(inp)
  end
  c = 0
  @h.times do |y|
    @w.times do |x|
      if(d[y][x] == 1)
        saiki(d,x,y)
        c += 1
      end
    end
  end
  puts c
end
=begin

=end