





'''simple docstring'''







def    _lowerCAmelCase						(						)					->					int:

			for a in range(300	):
						for b in range(a + 1					,	400	):
									for c in range(b + 1					,	500	):
												if (a + b + c) == 1000 and (a**2) + (b**2) == (c**2):
															return a * b * c

			return -1





def    _lowerCAmelCase						(						)					->					int:

			for a in range(300	):
						for b in range(400	):
									__lowerCAmelCase											=				1000 - a - b
									if a < b < c and (a**2) + (b**2) == (c**2):
												return a * b * c

			return -1





def    _lowerCAmelCase						(						)					->					None:
			import timeit

			print(
			    timeit.timeit("""solution()"""					,	setup="""from __main__ import solution"""					,	number=1000	)	)
			print(
			    timeit.timeit(
			        """solution_fast()"""					,	setup="""from __main__ import solution_fast"""					,	number=1000	)	)


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








'''simple docstring'''







import torch
from torch import autograd





class     _UpperCAmelCase							(						autograd.Function   ):
		@staticmethod
		def   lowerCamelCase__			(  __SCREAMING_SNAKE_CASE,__SCREAMING_SNAKE_CASE,__SCREAMING_SNAKE_CASE,__SCREAMING_SNAKE_CASE			):



					'''simple docstring'''

					__lowerCAmelCase											=				inputs.numel()
					__lowerCAmelCase											=				int(0.005 * nb_elems			) + 1
					if sigmoid:
								__lowerCAmelCase											=				(torch.sigmoid(__SCREAMING_SNAKE_CASE			) > threshold).type(inputs.type()			)
					else:
								__lowerCAmelCase											=				(inputs > threshold).type(inputs.type()			)
					if mask.sum() < nb_min:
								# We limit the pruning so that at least 0.5% (half a percent) of the weights are remaining
								__lowerCAmelCase											=				inputs.flatten().kthvalue(max(nb_elems - nb_min,1			)			).values
								__lowerCAmelCase											=				(inputs > k_threshold).type(inputs.type()			)
					return mask







		@staticmethod
		def   lowerCamelCase__			(  __SCREAMING_SNAKE_CASE,__SCREAMING_SNAKE_CASE			):



					'''simple docstring'''

					return gradOutput, None, None





class     _UpperCAmelCase							(						autograd.Function   ):
		@staticmethod
		def   lowerCamelCase__			(  __SCREAMING_SNAKE_CASE,__SCREAMING_SNAKE_CASE,__SCREAMING_SNAKE_CASE			):



					'''simple docstring'''

					__lowerCAmelCase											=				inputs.clone()
					__lowerCAmelCase						,       __lowerCAmelCase											=				inputs.flatten().sort(descending=__SCREAMING_SNAKE_CASE			)
					__lowerCAmelCase											=				int(threshold * inputs.numel()			)

					# flat_out and mask access the same memory.
					__lowerCAmelCase											=				mask.flatten()
					__lowerCAmelCase											=				0
					__lowerCAmelCase											=				1
					return mask







		@staticmethod
		def   lowerCamelCase__			(  __SCREAMING_SNAKE_CASE,__SCREAMING_SNAKE_CASE			):



					'''simple docstring'''

					return gradOutput, None





class     _UpperCAmelCase							(						lowerCAmelCase_   ):
		@staticmethod
		def   lowerCamelCase__			(  __SCREAMING_SNAKE_CASE,__SCREAMING_SNAKE_CASE			):



					'''simple docstring'''

					__lowerCAmelCase											=				inputs.clone()
					__lowerCAmelCase						,       __lowerCAmelCase											=				inputs.abs().flatten().sort(descending=__SCREAMING_SNAKE_CASE			)
					__lowerCAmelCase											=				int(threshold * inputs.numel()			)

					# flat_out and mask access the same memory.
					__lowerCAmelCase											=				mask.flatten()
					__lowerCAmelCase											=				0
					__lowerCAmelCase											=				1
					return mask

