






def    UpperCamelCase__  (   UpperCAmelCase     )     ->		str:







							"""simple docstring"""





							_a  :    List[str]			=						len(lowerCAmelCase__     )

							# Set the gap value to be decreased by a factor of 1.3
							# after each iteration
							_a  :    str			=						1.3

							# Continue sorting until the gap is 1
							while gap > 1:
														# Decrease the gap value
														_a  :    Any			=						int(gap / shrink     )

														# Sort the elements using insertion sort
														for i in range(lowerCAmelCase__    ,	len(lowerCAmelCase__     )     ):
																					_a  :    Any			=						collection[i]
																					_a  :    List[str]			=						i
																					while j >= gap and collection[j - gap] > temp:
																												_a  :    Dict			=						collection[j - gap]
																												j -= gap
																					_a  :    List[Any]			=						temp

							return collection


if __name__ == "__main__":
						import doctest

						doctest.testmod()







def      UpperCAmelCase						( lowerCAmelCase__					,     lowerCAmelCase__	):


		'''simple docstring'''

		if n < 0:
				return 0
		# table[i] represents the number of ways to get to amount i
		__A    =							[0] * (n + 1)

		# There is exactly 1 way to get to zero(You pick no coins).
		__A    =							1

		# Pick all coins one by one and update table[] values
		# after the index greater than or equal to the value of the
		# picked coin
		for coin_val in s:
				for j in range(lowerCAmelCase__					,     n + 1	):
						table[j] += table[j - coin_val]

		return table[n]


if __name__ == "__main__":
					import doctest

					doctest.testmod()

