fn main [ var lines := list_break_to_lines(read_lazy(h[0])); const x := len(lines[0]); const y := len(lines); var removed := 0; again: var adj := array_fill(0, [ x, y ]); for i := 0 to x do [ for j := 0 to y do [ if lines[j][i] = '@' then [ for k := -1 to 2 do [ for l := -1 to 2 do [ if i + k >= 0, i + k < x, j + l >= 0, j + l < y then adj[i + k, j + l] += 1; ] ] ] ] ] var did_something := false; for i := 0 to x do [ for j := 0 to y do [ if lines[j][i] = '@' then [ if adj[i, j] <= 4 then [ removed += 1; lines[j][i] := '.'; did_something := true; ] ] ] ] if did_something then goto again; write(h[1], ntos(removed) + nl); ]