

'''simple docstring'''






def 		_A     (    A__      ):






 """simple docstring"""



 if not isinstance(A__     ,				A__      ):
  raise ValueError('''Input must be an integer'''      )
 if input_num <= 0:
  raise ValueError('''Input must be positive'''      )
 return sum(
     divisor for divisor in range(1     ,				input_num // 2 + 1      ) if input_num % divisor == 0      )


if __name__ == "__main__":
 import doctest

 doctest.testmod()









'''simple docstring'''







from heapq import heappop, heappush

import numpy as np





def  SCREAMING_SNAKE_CASE_       (UpperCamelCase				,			UpperCamelCase				,			UpperCamelCase				,			UpperCamelCase				,			)      ->       tuple[float | int, list[tuple[int, int]]]:
							lowerCamelCase__  ,		lowerCamelCase__					:	Union[str, Any]         =       grid.shape
							lowerCamelCase__					:	List[str]         =       [-1, 1, 0, 0]
							lowerCamelCase__					:	Dict         =       [0, 0, -1, 1]
							if allow_diagonal:
														dx += [-1, -1, 1, 1]
														dy += [-1, 1, -1, 1]

							lowerCamelCase__  ,		lowerCamelCase__					:	Any         =       [(0, source)], set()
							lowerCamelCase__					:	Tuple         =       np.full((rows, cols)				,			np.inf      )
							lowerCamelCase__					:	List[str]         =       0
							lowerCamelCase__					:	Optional[int]         =       np.empty((rows, cols)				,			dtype=UpperCamelCase      )
							lowerCamelCase__					:	str         =       None

							while queue:
														((lowerCamelCase__)  ,		(lowerCamelCase__))					:	List[str]         =       heappop(UpperCamelCase      )
														if (x, y) in visited:
																					continue
														visited.add((x, y)      )

														if (x, y) == destination:
																					lowerCamelCase__					:	Optional[int]         =       []
																					while (x, y) != source:
																												path.append((x, y)      )
																												lowerCamelCase__  ,		lowerCamelCase__					:	List[Any]         =       predecessors[x, y]
																					path.append(UpperCamelCase      )  # add the source manually
																					path.reverse()
																					return matrix[destination], path

														for i in range(len(UpperCamelCase      )      ):
																					lowerCamelCase__  ,		lowerCamelCase__					:	Union[str, Any]         =       x + dx[i], y + dy[i]
																					if 0 <= nx < rows and 0 <= ny < cols:
																												lowerCamelCase__					:	Any         =       grid[nx][ny]
																												if next_node == 1 and matrix[nx, ny] > dist + 1:
																																			heappush(UpperCamelCase				,			(dist + 1, (nx, ny))      )
																																			lowerCamelCase__					:	Union[str, Any]         =       dist + 1
																																			lowerCamelCase__					:	List[str]         =       (x, y)

							return np.inf, []


if __name__ == "__main__":
			import doctest

			doctest.testmod()

