fn check_seq(levels : list(int)) : bool [ var direction := 0; for i := 1 to len(levels) do [ if i = 1 then [ direction := sgn(levels[i - 1] - levels[i]); if direction = 0 then return false; ] if direction <> sgn(levels[i - 1] - levels[i]) or abs(levels[i - 1] - levels[i]) > 3 then return false; ] return true; ] fn main [ var lines := list_break_to_lines(read_lazy(h[0])); var safe := 0; for line in lines do [ var levels := map(list_break_whitespace(line), ston); if check_seq(levels) then [ safe += 1; goto cont; ] for i := 0 to len(levels) do [ if check_seq(levels[ .. i] + levels[i + 1 .. ]) then [ safe += 1; goto cont; ] ] cont: ] write(h[1], ntos(safe) + nl); ]