





'''simple docstring'''







def        lowerCamelCase_      (  SCREAMING_SNAKE_CASE__      :			int,			SCREAMING_SNAKE_CASE__      :			int   ) ->	int:
						return abs(SCREAMING_SNAKE_CASE__   ) if a == 0 else greatest_common_divisor(b % a,			SCREAMING_SNAKE_CASE__   )





def        lowerCamelCase_      (  SCREAMING_SNAKE_CASE__      :			int,			SCREAMING_SNAKE_CASE__      :			int   ) ->	int:
						while y:  # --> when y=0 then loop will terminate and return x as final GCD.
												UpperCAmelCase_						,       UpperCAmelCase_			:      Optional[Any]     						=  y, x % y
						return abs(SCREAMING_SNAKE_CASE__   )





def        lowerCamelCase_      (  ) ->	Optional[int]:
						try:
												UpperCAmelCase_			:      Optional[Any]     						=  input('''Enter two integers separated by comma (,): '''   ).split(''','''   )
												UpperCAmelCase_			:      Optional[int]     						=  int(nums[0]   )
												UpperCAmelCase_			:      List[Any]     						=  int(nums[1]   )
												print(
												    F"""greatest_common_divisor({num_a}, {num_a}) = """
												    F"""{greatest_common_divisor(SCREAMING_SNAKE_CASE__,			SCREAMING_SNAKE_CASE__   )}"""   )
												print(F"""By iterative gcd({num_a}, {num_a}) = {gcd_by_iterative(SCREAMING_SNAKE_CASE__,			SCREAMING_SNAKE_CASE__   )}"""   )
						except (IndexError, UnboundLocalError, ValueError):
												print('''Wrong input'''   )


if __name__ == "__main__":
					main()












'''simple docstring'''







def        lowerCamelCase_      (  SCREAMING_SNAKE_CASE__      :			list[int]   ) ->	list[list[int]]:
						UpperCAmelCase_			:      int     						=  []
						if len(SCREAMING_SNAKE_CASE__   ) == 1:
												return [nums.copy()]
						for _ in range(len(SCREAMING_SNAKE_CASE__   )   ):
												UpperCAmelCase_			:      List[Any]     						=  nums.pop(0   )
												UpperCAmelCase_			:      Optional[Any]     						=  permute(SCREAMING_SNAKE_CASE__   )
												for perm in permutations:
																		perm.append(SCREAMING_SNAKE_CASE__   )
												result.extend(SCREAMING_SNAKE_CASE__   )
												nums.append(SCREAMING_SNAKE_CASE__   )
						return result





def        lowerCamelCase_      (  SCREAMING_SNAKE_CASE__      :			List[str]   ) ->	Any:

						def backtrack(SCREAMING_SNAKE_CASE__      :			Union[str, Any]   ):
												if start == len(SCREAMING_SNAKE_CASE__   ) - 1:
																		output.append(nums[:]   )
												else:
																		for i in range(SCREAMING_SNAKE_CASE__,			len(SCREAMING_SNAKE_CASE__   )   ):
																								UpperCAmelCase_						,       UpperCAmelCase_			:      Tuple     						=  nums[i], nums[start]
																								backtrack(start + 1   )
																								UpperCAmelCase_						,       UpperCAmelCase_			:      int     						=  nums[i], nums[start]  # backtrack

						UpperCAmelCase_			:      Optional[int]     						=  []
						backtrack(0   )
						return output


if __name__ == "__main__":
					import doctest

					# use res to print the data in permute2 function
					snake_case_     :       Tuple						=  permutea([1, 2, 3])
					print(res)
					doctest.testmod()





