


"""simple docstring"""







from __future__ import annotations

__lowercase    =				list[list[int]]

# assigning initial values to the grid
__lowercase    =				[
    [3, 0, 6, 5, 0, 8, 4, 0, 0],
    [5, 2, 0, 0, 0, 0, 0, 0, 0],
    [0, 8, 7, 0, 0, 0, 0, 3, 1],
    [0, 0, 3, 0, 1, 0, 0, 8, 0],
    [9, 0, 0, 8, 6, 3, 0, 0, 5],
    [0, 5, 0, 0, 9, 0, 6, 0, 0],
    [1, 3, 0, 0, 0, 0, 2, 5, 0],
    [0, 0, 0, 0, 0, 0, 0, 7, 4],
    [0, 0, 5, 2, 0, 6, 3, 0, 0],
]

# a grid with no solution
__lowercase    =				[
    [5, 0, 6, 5, 0, 8, 4, 0, 3],
    [5, 2, 0, 0, 0, 0, 0, 0, 2],
    [1, 8, 7, 0, 0, 0, 0, 3, 1],
    [0, 0, 3, 0, 1, 0, 0, 8, 0],
    [9, 0, 0, 8, 6, 3, 0, 0, 5],
    [0, 5, 0, 0, 9, 0, 6, 0, 0],
    [1, 3, 0, 0, 0, 0, 2, 5, 0],
    [0, 0, 0, 0, 0, 0, 0, 7, 4],
    [0, 0, 5, 2, 0, 6, 3, 0, 0],
]


def 					lowercase      (    A_  ,       A_  ,       A_  ,       A_	)->				List[str]:
  '''simple docstring'''







  for i in range(9	):
    if grid[row][i] == n or grid[i][column] == n:
      return False

  for i in range(3	):
    for j in range(3	):
      if grid[(row - row % 3) + i][(column - column % 3) + j] == n:
        return False

  return True


def 					lowercase      (    A_	)->				List[Any]:
  '''simple docstring'''







  for i in range(9	):
    for j in range(9	):
      if grid[i][j] == 0:
        return i, j
  return None


def 					lowercase      (    A_	)->				Optional[Any]:
  '''simple docstring'''







  if location := find_empty_location(_a	):
    a						:		Union[str, Any]											=      location
  else:
    # If the location is ``None``, then the grid is solved.
    return grid

  for digit in range(1  ,       10	):
    if is_safe(_a  ,       _a  ,       _a  ,       _a	):
      a						:		Optional[int]											=      digit

      if sudoku(_a	) is not None:
        return grid

      a						:		Any											=      0

  return None


def 					lowercase      (    A_	)->				Dict:
  '''simple docstring'''







  for row in grid:
    for cell in row:
      print(_a  ,       end=" "	)
    print()


if __name__ == "__main__":
 # make a copy of grid so that you can compare with the unmodified grid
 for example_grid in (initial_grid, no_solution):
  print("""\nExample grid:\n""" + """=""" * 20)
  print_solution(example_grid)
  print("""\nExample grid solution:""")
  __lowercase    =				sudoku(example_grid)
  if solution is not None:
   print_solution(solution)
  else:
   print("""Cannot find a solution.""")










"""simple docstring"""







from math import ceil, sqrt


def 					lowercase      (    A_ = 1_000_000	)->				int:
  '''simple docstring'''







  a						:		Tuple											=      0

  for outer_width in range(3  ,       (limit // 4) + 2	):
    if outer_width**2 > limit:
      a						:		str											=      max(ceil(sqrt(outer_width**2 - limit	)	)  ,       1	)
    else:
      a						:		Tuple											=      1
    if (outer_width - hole_width_lower_bound) % 2:
      hole_width_lower_bound += 1

    answer += (outer_width - hole_width_lower_bound - 2) // 2 + 1

  return answer


if __name__ == "__main__":
 print(f'''{solution() = }''')






